繁体   English   中英

Ant脚本javac命令转换为groovy脚本AntBuilder.javac

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM