[英]Ant script javac command converted to a groovy script AntBuilder.javac
嗨我是新的jenkins / ant / groovy世界和谷歌无法帮助我解决我的问题。
我的任务是在构建过程中删除ant脚本(使用jenkins)并将它们包含在jenkins作业(Execute system Groovy脚本)中。
我的脚本的粗体部分是失败的原因,但我不知道如何解决这个问题。
我希望有人可以帮我解决这个问题。
这是我的“执行系统Groovy脚本”:
antbuild = new AntBuilder()
projectHome = '...Homedirectory'
projectDomainModel = projectHome + '/CSSDomainModel'
projectPresentationBase = projectHome + '/CSSPresentationBase'
projectServices = projectHome + '/CSSServices'
projectResource = projectHome + '/src/main/resources'
Sources = projectHome + '/Presentation/JavaSource'
projectLibraries = 'lib/bin'
projectWebContent = projectHome + '/Presentation/WebContent'
projectWebInf = projectWebContent + '/WEB-INF'
deployHome = projectHome + '/target/servicekundenportal'
deployBuild = deployHome + '/build/classes'
deployWebInf = deployHome + '/WEB-INF'
foreignSources = 'src'
deployWARFile = deployHome + '/serviceportal.war'
j2eeLibraries = 'D:/Programme_x64/tomcat/8.0.21/Instanz_02/lib'
compileTarget = '1.8'
<b>compilerSourceFiles = antbuild.path{
pathelement(path:Sources)
pathelement(path:projectDomainModel + '/' + foreignSources)
pathelement(path:projectPresentationBase + '/' + foreignSources)
pathelement(path:projectServices + '/' + foreignSources)
}
compilerLibraryFiles = antbuild.path{
fileset(dir:projectDomainModel + '/' + projectLibraries) {include name:'**/*.jar'}
fileset(dir:projectPresentationBase + '/' + projectLibraries) {include name:'**/*.jar'}
fileset(dir:projectServices + '/' + projectLibraries) {include name:'**/*.jar'}
fileset(dir:j2eeLibraries) {include name:'**/*.jar'}
}</b>
antbuild.delete(dir:deployHome)
antbuild.delete(file:deployWARFile)
antbuild.mkdir(dir:deployBuild)
build() {
antbuild.javac(
destdir:deployBuild,
target:compileTarget,
debug:true,
fork:true,
executable:'D:/Programme_x64/Java/jdk1.8.0_45/bin/javac')<b>{
src(path:compilerSourceFiles)
classpath(path:compilerLibraryFiles)
}</b>
}
build()
我无法转换的Ant脚本部分:
<!-- Compiler Source File Definition -->
<path id="compilerSourceFiles">
<pathelement path="${Sources}" />
<pathelement path="${projectDomainModel}/${foreignSources}" />
<pathelement path="${projectPresentationBase}/${foreignSources}" />
<pathelement path="${projectServices}/${foreignSources}" />
</path>
<!-- Compiler Library Definition -->
<path id="compilerLibraryFiles">
<fileset id="librariesDomainModel" dir="${projectDomainModel}/${projectLibraries}">
<include name="**/*.jar" />
</fileset>
<fileset id="librariesPresentationBase" dir="${projectPresentationBase}/${projectLibraries}">
<include name="**/*.jar" />
</fileset>
<fileset id="librariesServices" dir="${projectServices}/${projectLibraries}">
<include name="**/*.jar" />
</fileset>
<fileset dir="${j2eeLibraries}">
<include name="**/*.jar" />
</fileset>
</path>
<target name="executeCompiler" depends="preCompile">
<javac destdir="${deployBuild}" target="${compileTarget}"
debug="true" debuglevel="lines,vars" encoding="ISO8859-1">
<src refid="compilerSourceFiles" />
<classpath refid="compilerLibraryFiles" />
</javac>
</target>
您的示例对本地目录结构等有太多依赖关系以完全复制,但使用类似下面的内容作为模式应该让您朝着正确的方向前进:
def ant = new AntBuilder()
def projectHome = '...Homedirectory'
ant.path(id: 'compilerSourceFiles') {
pathelement(path: "$projectHome/Presentation/JavaSource")
pathelement(path: "$projectHome/CSSDomainModel/src")
pathelement(path: "$projectHome/CSSPresentationBase/src")
pathelement(path: "$projectHome/CSSServices/src")
}
ant.path(id: "compilerSourceFiles") {
fileset(id: "librariesDomainModel", dir: "$projectHome/CSSDomainModel/lib/bin") {
include(name: "**/*.jar")
}
fileset(id: "librariesPresentationBase", dir: "....") {
include(name: "**/*.jar")
}
//...
}
ant.target(name: 'executeCompiler', depends: 'preCompile') {
javac(destDir: "...", target: "...", debug: true, debugLevel: "lines,vars", encoding: "...") {
src(refid: "compilerSourceFiles")
classpath(refid: "compilerLibraryFiles")
}
}
换句话说,每个ant xml片段:
<outerelement outerattribute="outervalue">
<innerelement innerattribute="innervalue" />
</outerelement>
转换为:
ant.outerelement(outerattribute: "outervalue") {
innerelement(innerattribute: "innervalue")
}
使用AntBuilder时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.