如何为Gradle 4指定类输出目录?

时间:2017-08-23 13:51:21

标签: gradle

Gradle项目已弃用' classesDir'以前的工作方法:

sourceSets {
    main {
        output.classesDir = "myDir"
    }
}

应该用其他东西替换。文档讨论' output.classesDirs'但这是只读属性。

在Gradle 4.x脚本中指定自定义编译输出目录的方法是什么?

2 个答案:

答案 0 :(得分:1)

如果你正在使用java,你可以这样做

 apply plugin: 'java'

 sourceSets {
   main {
     // Compiled Java classes should use this directory
     java.outputDir = file('myDir')
   }
 }

查看更多:https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/SourceSetOutput.html

答案 1 :(得分:0)

根据Gradle 6.5.1文档,java.outputDir属性已由classesDirectory替换:

Gradle 6.5.1 docs for SourceDirectorySet

但是我认为destinationDirectory属性应该用于读取或修改编译器的输出目录。因此,文档应该说它被destinationDirectory属性而不是classesDirectory属性取代。

可以使用以下两种方法之一来更改编译器输出目录:

sourceSets {
  main {
    java {
      destinationDirectory.set(file("${project.buildDir}/classes/${sourceSets.main.name}/java"))
    }
  }
}

OR

sourceSets {
  main {
    java {
      destinationDirectory.value(project.getLayout().getBuildDirectory().dir("classes/${sourceSets.main.name}/java"));
    }
  }
}

我认为第二种选择更好。

要读取特定sourceSet的输出目录,请使用:

project.sourceSets.main.java.destinationDirectory.get()