【问题标题】:Ant to Gradle, Problem with javaCompile taskAnt 到 Gradle,javaCompile 任务出现问题
【发布时间】:2020-06-13 19:47:09
【问题描述】:

我有以下蚂蚁任务:

<javac 
  srcdir="${mypackage.code.src.java}"
    source="1.8"
  target="1.8" 
  destdir="${mypackage.build.output.}"     
  deprecation="on" 
  debug="true" 
  >

  <classpath path="${jboss.common.lib.}/hibernate-annotations-3.5.0-Final.jar" />
  <classpath path="${jboss.common.lib.}/jboss-ejb3-common.jar" />
  <classpath path="${jboss.common.lib.}/scheduler-plugin.jar" />
  <classpath path="${jboss.common.lib.}/servlet-api.jar" />

  <classpath>
    <path>
      <fileset dir="${myotherpackage.lib.thirdparty.}">
        <include name="jboss-5.1.0.GA/ejb3-persistence.jar" />
        <include name="jboss-5.1.0.GA/hibernate-core-4.2.1.final.jar"/>
        <include name="jboss-5.1.0.GA/jboss-javaee.jar" />   
        <include name="jboss-5.1.0.GA/jboss-j2se.jar"/>
        <include name="jboss-5.1.0.GA/jsp-api.jar"/>
      </fileset>
      <fileset dir="${jboss.server.myotherpackage.lib.}">
        <include name="**/*.jar"/>
      </fileset>
      <fileset dir="${jboss.server.myotherpackageear.}" >
        <include name="**/*.jar"/>
      </fileset>
      <fileset dir="${mypackage.code.src.www}/WEB-INF/lib" >
        <include name="**/*.*" />
        </fileset>
    </path>
  </classpath>
</javac>

我正在尝试将其转换为 gradle,到目前为止我有以下任务:

task doCompile(type: JavaCompile) {
    classpath = sourceSets.mySourceSet.output
    sourceCompatibility = '1.8'
    targetCompatibility = '1.8'
    destinationDir = file("$mypackage_build_output")
    source = file("$mypackage_code_src_java")
}

我的源集也定义如下:

sourceSets {
    jt3SourceSet {
        java {
            compileClasspath += files("${jboss_common_lib}/hibernate-annotations-3.5.0-Final.jar")
            compileClasspath += files("${jboss_common_lib}/jboss-ejb3-common.jar")
            compileClasspath += files("${jboss_common_lib}/scheduler-plugin.jar")
            compileClasspath += files("${jboss_common_lib}/servlet-api.jar")
            compileClasspath += files("${myotherpackage_lib_thirdparty}/jboss-5.1.0.GA/hibernate-core-4.2.1.final.jar")
            compileClasspath += files("${myotherpackage_lib_thirdparty}/jboss-5.1.0.GA/ejb3-persistence.jar")
            compileClasspath += files("${myotherpackage_lib_thirdparty}/jboss-5.1.0.GA/jboss-javaee.jar")
            compileClasspath += files("${myotherpackage_lib_thirdparty}/jboss-5.1.0.GA/jboss-j2se.jar")
            compileClasspath += files("${myotherpackage_lib_thirdparty}/jboss-5.1.0.GA/jsp-api.jar")
            compileClasspath += fileTree(dir: "${jboss_common_lib}", include: ['*.jar'])
            compileClasspath += fileTree(dir: "${jboss_server_mypackage2ear}", include: ['*.jar'])
            compileClasspath += fileTree(dir: "${mypackage_code_src_www}/WEB-INF/lib", include: ['*.*'])
        }
    }
}

在 ant 编译中它工作得很好,但在 gradle 上它不能识别在 sourceSet 上声明的任何依赖项。 还尝试在我的 dependencies{} 标签上添加依赖项,但它仍然不起作用。 到处搜索,找不到解决办法

提前致谢!

【问题讨论】:

  • 您是否有理由不使用Java 插件提供的编译任务?
  • @FranciscoMateo 除了编译之外,我还需要做更多的工作,但是如果我可以使用编译任务并且之后还能做一些额外的事情,我完全可以使用它。这可能吗?
  • 是的,您应该能够在内置 Java 编译任务之前或之后做额外的事情。从外观上看,所有这些 jar 都是本地的,还是可以从 Maven Central 等在线存储库中检索到?
  • @FranciscoMateo 所有这些 jars 都是本地的,其中一些是 hibernate 之类的库,可以从 maven Central 检索,但我也有非常古老的库
  • @jmacboy 你能指定你正在使用的 gradle 版本吗?谢谢

标签: java gradle ant


【解决方案1】:

我最终这样做了:

task doCompile(type: JavaCompile) {
    classpath = sources //a file collection specifying a list of sources
    sourceCompatibility = '1.8'
    targetCompatibility = '1.8'
    destinationDir = file("$mypackage_build_output")
    source = file("$mypackage_code_src_java")
}

还删除了sourceSet,不再需要它了。 你可以使用 java 插件来完成这个,但我需要做的不仅仅是编译,所以坚持使用 javacompile 任务。

【讨论】:

    猜你喜欢
    • 2017-07-07
    • 1970-01-01
    • 2020-07-12
    • 2014-10-19
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多