在Gradle插件中运行ant.java

在Gradle插件中运行ant.java,gradle,Gradle,我正在创建自己的gradle插件 在MyRunTask中,它扩展了DefaultTask 我正在写这样的东西 @TaskAction public void run() { ant.java { main = 'org.mylang.runtime.main.Main' classpath = project.configurations.runtime args = [ project.mylang.mainMy

我正在创建自己的gradle插件

在MyRunTask中,它扩展了DefaultTask

我正在写这样的东西

@TaskAction
public void run() {

    ant.java {
        main = 'org.mylang.runtime.main.Main'
        classpath = project.configurations.runtime
        args = [
            project.mylang.mainMylangClass
        ]
        classpath jar.archivePath

    }
}
run与Jar任务链接,因此我可以在运行程序时直接使用Jar。出于这个原因,我喜欢将Jar舔到我的ant.java

  • 我想将我的跑步记录链接到Jar任务,这样我就可以直接使用Jar来进行跑步
  • 当我给出
    classpath jar.archivePath
    时,它说的
    jar
    没有初始化

  • 我建议使用Gradle的
    project.javaexec
    而不是Ant的
    project.Ant.java
    。您的任务类不应该硬编码
    project.jar.archivePath
    ,而应该接受类型为
    Iterable
    的属性
    classpath
    ,该属性从外部(通过插件或构建脚本)配置为
    jar.archivePath
    。如果您的任务类所做的一切都是执行<代码> Proj.javaExcel < /C>,请考虑使用由插件或构建脚本配置的规则<代码> javaExc>/COD>任务。

    >“应该接受一个类型的属性类路径,它是用JAR.AcviPePATH从外部配置的”,这会自动发生吗?不使用jar.archivePath?不,您必须在自定义插件或构建脚本中执行此操作。关键是任务类不应该知道构建模型。否则,它们的耦合太紧密,无法重用。