fitnesse(gradle构建)安装步骤

1.安装jdk、ant、gradle(参考http://www.cnblogs.com/274914765qq/p/4401525.html)

 

2.下载Fitnesse

https://github.com/unclebob/fitnesse/

 

3.下载完成后,解压,并双击gradlew.bat,然后等待完成(时间较长)。

 

4.完成后,通过命令行进入fitnesse-master并使用下面的命令运行(会下载很多包,时间较长):

.\gradlew run

 

5.eclipse 安装gradle插件
参考:http://blog.csdn.net/buqutianya/article/details/50226721


6.将Fitnesse导入eclipse

a. File -> Import... -> Gradle Project

b. 选择fitnesse-master目录,确认后导入

 

7 例子

参考 http://www.cnblogs.com/moonpool/p/5547549.html 

上面的例子中是使用ant工具构建的,现在新的fitnesse是使用gradle工具构建,所以在使用第三方的jar包时有些变化。

修改build.gradle文件

  1 /* Plan:
  2  - Create multi-module repo:
  3    - fit (deps: common)
  4    - slim (deps: common, networking)
  5    - common
  6    - networking
  7    - ant
  8    - fitnesse, the wiki server
  9  - Move file creation to plugin
 10 */
 11 
 12 buildscript {
 13     repositories {
 14         mavenCentral()
 15     }
 16     dependencies {
 17         classpath 'info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.1.9'
 18     }
 19 }
 20 
 21 plugins {
 22   id 'java'
 23   id "maven-publish"
 24   id "com.jfrog.bintray" version "1.6"
 25 }
 26 
 27 apply plugin: "info.solidsoft.pitest"
 28 
 29 
 30 version = new Date().format('yyyyMMdd')
 31 
 32 println "Building FitNesse v${project.version}..."
 33 
 34 repositories {
 35   mavenCentral()
 36 }
 37 
 38 configurations {
 39   lesscss
 40   optional
 41   compile {
 42     transitive = false
 43     extendsFrom optional
 44   }
 45   runtime {
 46     transitive = false
 47   }
 48 }
 49 
 50 sourceSets {
 51   main {
 52     java.srcDir 'src'
 53     resources.srcDir 'src'
 54     output.resourcesDir output.classesDir
 55   }
 56   test {
 57     java.srcDir 'test'
 58   }
 59 }
 60 
 61 sourceCompatibility = '1.7'
 62 targetCompatibility = '1.7'
 63 
 64 dependencies {
 65   compile "org.htmlparser:htmlparser:2.1"
 66   compile "org.htmlparser:htmllexer:2.1"
 67   compile "org.apache.velocity:velocity:1.7"
 68   compile "commons-lang:commons-lang:2.6"
 69   compile "commons-collections:commons-collections:3.2.2"
 70   compile "org.json:json:20151123"
 71   compile "com.googlecode.java-diff-utils:diffutils:1.3.0"
 72   optional "org.apache.ant:ant:1.9.6"
 73   optional "junit:junit:4.12"
 74 
 75   testCompile "junit:junit:4.12"
 76   testCompile "org.mockito:mockito-core:1.10.19"
 77   testCompile "org.hamcrest:hamcrest-all:1.3"
 78   testCompile "net.javacrumbs.json-unit:json-unit:1.1.6"
 79   
 80   compileOnly files('lib/joda-time-2.3.jar')
 81 
 82   lesscss "org.mozilla:rhino:1.7.7.1"
 83 }
 84 
 85 task fitNesseVersion {
 86   def versionFile = new File("${sourceSets.main.output.resourcesDir}/META-INF/FitNesseVersion.txt")
 87   versionFile.parentFile.mkdirs()
 88   versionFile.text="v${version}"
 89 }
 90 
 91 task compileBootstrap(type: LessCompiler) {
 92   inputDir file('src/fitnesse/resources/bootstrap/less')
 93   mainLessFile = 'fitnesse-bootstrap.less'
 94   cssFile file("${sourceSets.main.output.resourcesDir}/fitnesse/resources/bootstrap/css/fitnesse-bootstrap.css")
 95   classpath configurations.lesscss
 96 }
 97 
 98 task createUpdateLists(type: WikiFileListBuilderTask) {
 99   outputDirectory = "${sourceSets.main.output.resourcesDir}/Resources"
100   doNotReplaceFiles = [
101     "FitNesseRoot/FrontPage/content.txt",
102     "FitNesseRoot/FrontPage/properties.xml",
103     "FitNesseRoot/PageHeader/content.txt",
104     "FitNesseRoot/PageHeader/properties.xml",
105     "FitNesseRoot/PageFooter/content.txt",
106     "FitNesseRoot/PageFooter/properties.xml",
107     "FitNesseRoot/PageFooter/properties.xml",
108     "FitNesseRoot/TemplateLibrary/content.txt",
109     "FitNesseRoot/TemplateLibrary/properties.xml",
110     "FitNesseRoot/TemplateLibrary/StaticPage/content.txt",
111     "FitNesseRoot/TemplateLibrary/StaticPage/properties.xml",
112     "FitNesseRoot/TemplateLibrary/SuitePage/content.txt",
113     "FitNesseRoot/TemplateLibrary/SuitePage/properties.xml",
114     "FitNesseRoot/TemplateLibrary/TestPage/content.txt",
115     "FitNesseRoot/TemplateLibrary/TestPage/properties.xml" ]
116   mainDirectories = [
117     "FitNesseRoot/FitNesse",
118     "FitNesseRoot/FrontPage",
119     "FitNesseRoot/PageFooter",
120     "FitNesseRoot/PageHeader",
121     "FitNesseRoot/TemplateLibrary" ]
122 }
123 
124 processResources.dependsOn "fitNesseVersion", "compileBootstrap", "createUpdateLists"
125 
126 task copyRuntimeLibs(type: Copy) {
127   into "lib"
128   from configurations.runtime
129 }
130 
131 test {
132   dependsOn copyRuntimeLibs
133   maxParallelForks 1
134 }
135 
136 pitest {
137   targetClasses = ['fit.*', 'fitnesse.*']
138   pitestVersion = "1.1.10"
139   threads = 1 // We can not deal with parallel execution yet
140   outputFormats = ['XML', 'HTML']
141 }
142 
143 task run(type: JavaExec) {
144   dependsOn classes, copyRuntimeLibs
145   classpath = sourceSets.main.runtimeClasspath
146   main "fitnesseMain.FitNesseMain"
147   args "-p", "8001", "-e", "0"
148 }
149 
150 jar {
151   dependsOn createUpdateLists
152   into('Resources') {
153     from('.') {
154       include 'FitNesseRoot/FitNesse/**/content.txt'
155       include 'FitNesseRoot/FitNesse/**/properties.xml'
156       include 'FitNesseRoot/FrontPage/**/content.txt'
157       include 'FitNesseRoot/FrontPage/**/properties.xml'
158       include 'FitNesseRoot/PageFooter/**/content.txt'
159       include 'FitNesseRoot/PageFooter/**/properties.xml'
160       include 'FitNesseRoot/PageHeader/**/content.txt'
161       include 'FitNesseRoot/PageHeader/**/properties.xml'
162       include 'FitNesseRoot/TemplateLibrary/**/content.txt'
163       include 'FitNesseRoot/TemplateLibrary/**/properties.xml'
164     }
165   }
166   manifest {
167     attributes("Main-Class": "fitnesseMain.FitNesseMain",
168         "Implementation-Version": version)
169   }
170 }
171 
172 task standaloneJar(type: Jar, dependsOn: jar) {
173   baseName = 'fitnesse'
174   classifier = 'standalone'
175   from {
176     (configurations.compile - configurations.optional).collect { zipTree(it) }
177   } {
178     exclude 'META-INF/**'
179   }
180   from jar.outputs.files.collect {
181     zipTree(it)
182   }
183   manifest {
184     attributes("Main-Class": "fitnesseMain.FitNesseMain",
185         "Implementation-Version": version)
186   }
187 }
188 
189 task acceptanceTest(type: JavaExec) {
190   mustRunAfter test
191   onlyIf { dependsOnTaskDidWork() }
192   classpath = standaloneJar.outputs.files
193   main "fitnesseMain.FitNesseMain"
194   args "-o", "-c", "FitNesse.SuiteAcceptanceTests?suite&format=text"
195 }
196 
197 check.dependsOn acceptanceTest
198 
199 task javadocJar(type: Jar) {
200   mustRunAfter check
201   classifier = 'javadoc'
202   from javadoc
203 }
204 
205 task sourcesJar(type: Jar) {
206   mustRunAfter check
207   classifier = 'sources'
208   from sourceSets.main.allSource
209 }
210 
211 clean{
212   delete "lib"
213 }
214 
215 publishing {
216   publications {
217     FitNesseRelease(MavenPublication) {
218       from components.java
219       artifact sourcesJar
220       artifact javadocJar
221       artifact standaloneJar
222       groupId 'org.fitnesse'
223       artifactId 'fitnesse'
224       pom.withXml {
225         asNode().get('version') + { url('http://fitnesse.org') }
226         asNode().appendNode('description', 'The fully integrated standalone wiki, and acceptance testing framework.')
227         asNode().append(pomLicenses())
228         asNode().append(pomScm())
229         asNode().append(pomDevelopers())
230 
231         // Clean up scope entries added by the pom generator:
232         asNode().dependencies.'*'.findAll() {
233           if (it.scope.text() == 'runtime') {
234             it.remove(it.scope)
235           }
236         }
237       }
238     }
239   }
240 }
241 
242 bintray {
243   user = System.getenv("BINTRAY_USER") ?: 'Define your Bintray user name in BINTRAY_USER'
244   key = System.getenv("BINTRAY_API_KEY") ?: 'Define your Bintray BINTRAY_API_KEY'
245   publications = ['FitNesseRelease']
246   publish = true
247   pkg {
248     repo = System.getenv("BINTRAY_API_KEY") ?: 'edge'
249     name = 'fitnesse'
250     userOrg = 'fitnesse'
251     licenses = ['CPL-1.0']
252     websiteUrl = 'http://fitnesse.org'
253     vcsUrl = 'https://github.com/unclebob/fitnesse.git'
254     publicDownloadNumbers = true
255     githubRepo = 'unclebob/fitnesse'
256     version {
257       name = project.version
258       desc = "FitNesse release ${project.version}"
259       vcsTag = project.version
260       gpg {
261         sign = true
262       }
263     }
264   }
265 }
266 
267 wrapper {
268   gradleVersion = '2.13'
269 }
270 
271 def pomLicenses() {
272   new NodeBuilder().licenses {
273     license {
274       name 'Common Public License version 1.0'
275       url 'http://www.opensource.org/licenses/cpl1.0'
276       distribution 'repo'
277     }
278   }
279 }
280 
281 def pomScm() {
282   new NodeBuilder().scm {
283     connection 'scm:git:git://github.com/unclebob/fitnesse.git'
284     developerConnection 'scm:git:git@github.com:unclebob/fitnesse.git'
285     url 'scm:git:http://github.com/unclebob/fitnesse'
286   }
287 }
288 
289 def pomDevelopers() {
290   new NodeBuilder().developers {
291     developer {
292       id 'unclebob'
293       name 'Robert C. Martin'
294       email 'unclebob@cleancoder.com'
295     }
296   }
297 }

上面代码中compileOnly files('lib/joda-time-2.3.jar')就是加入第三方jar的方法。

 

posted @ 2016-08-13 09:17  月色深潭  阅读(1110)  评论(0编辑  收藏  举报