我按照这个答案 https://dev59.com/4GIk5IYBdhLWcg3wUsnv#19418847 操作,但是它并不能帮助我使用Gradle编译单个Java文件。它显示
我只有一个Java文件
以下是我Java文件中使用的类
Task :compileMessageKeys NO-SOURCE
为什么?我只有一个Java文件
CreateMessageKeysTask.java
,它依赖于"apache-ant-1.7.0/ant.jar"
jar包。task compileMessageKeys (type: JavaCompile) {
doFirst {
println "$projectDir/precompile"
new File("$projectDir/precompile").mkdirs()
}
source = sourceSets.main.java.srcDirs
include 'mypackage.build.CreateMessageKeysTask.java'
classpath = sourceSets.main.compileClasspath
destinationDir = sourceSets.main.output.classesDir
}
compileMessageKeys.options.compilerArgs = ["-sourcepath", "builder/precompile-task/src/mypackage/build"]
我的ant
脚本如下所示
<target name="precompile"
description="builds the CreateMessageKeysTask to generates the MessageKeys interface">
<mkdir dir="${precompile}" />
<echo message=" precompile.src: ${precompile.src}" />
<javac srcdir="${precompile.src}" destdir="${precompile}"
includes="mypackage/build/**"
debug="true" fork="true" memoryMaximumSize="${javacCoreMaxMem}"
includeantruntime="false">
<classpath>
<fileset dir="${my.proj.base}/lib/">
<include name="apache-ant-1.7.0/ant.jar" />
</fileset>
</classpath>
</javac>
</target>
以下是我Java文件中使用的类
import
语句。import org.apache.tools.ant.*
import java.io.*;
import java.util.*;
编辑
我尝试了下面的方法,但仍然没有帮助我。
task compileMessageKeys (type: JavaCompile) {
doFirst {
println "$projectDir/precompile"
new File("$projectDir/precompile").mkdirs()
}
dependencies{
compile fileTree(dir: 'lib/', include: ['apache-ant-1.7.0/ant.jar'])
}
source = sourceSets.main.java.srcDirs
include 'mypackage.build.CreateMessageKeysTask.java'
classpath = sourceSets.main.compileClasspath
destinationDir = sourceSets.main.output.classesDir
}
include
接受一个 Ant 风格的文件模式,但你使用的是类似于 Java 包引用的东西。然而,总体来说,我建议你创建一个 Gradle 任务,可能在 buildSrc 中,来管理这个问题。 - Bjørn Vesterant task
依赖于一些ant implementation
https://stackoverflow.com/q/63339476/1665592.. 我正在寻找它 - Swapnil Kotwaltask runWithJavaExec(type: JavaExec) { }
来编译 Java 文件并执行它吗? - Swapnil Kotwal