将另一个java源目录添加到gradle脚本

Red*_*nda 28 java gradle

我有一个示例java项目包

package com.example.testing;

用这样的文件树

app
|
  src->com->example->testing->Main.java
Run Code Online (Sandbox Code Playgroud)

和gradle脚本:

apply plugin: 'java'
apply plugin: 'application'

sourceSets {
    main {
        java {
            srcDirs 'src'
        }
    }


}

sourceSets.main.output.classesDir = file("classes")
mainClassName = 'com.example.testing.Main'

defaultTasks 'compileJava', 'run'
Run Code Online (Sandbox Code Playgroud)

现在我想为这个项目添加一些模块,我的文件夹将是这样的

app
|
  src1->com->example->testing->Main.java

  src2->com->another_example->another_testing->Library.java
Run Code Online (Sandbox Code Playgroud)

如何向gradle脚本添加新的源代码?

RaG*_*aGe 38

我同意@JB Nizet关于遵守标准惯例的观点.如果你仍然坚持成为无政府主义者:

你已经src在你的sourceset,为什么不加声明src1src2呢?您可以将它们添加到同一个源集,或者根据需要为每个模块定义源集.

sourceSets {
    main {
        java {
            srcDirs 'src'
            srcDirs 'src1'
            srcDirs 'src2'
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)

  • 虽然我同意想要使用标准约定,但这个提示在处理"生成"源时非常有用,这些源在生成器工具感觉就像折腾它们的地方结束......所以,谢谢! (13认同)
  • @bhantol 是的,你可以。 (2认同)
  • 关于成为无政府主义者的评论纯粹是一种观点,应该删除。 (2认同)

kop*_*por 13

问题是关于“添加”;案文的问题是描述一个更具体的场景。如果只想添加一个现有目录,这是添加的方法:

sourceSets.main.java.srcDirs += ['src/gen/java']
Run Code Online (Sandbox Code Playgroud)

一个完整的例子build.gradle如下:

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'com.squareup:javapoet:1.12.1'
}

sourceSets.main.java.srcDirs += ['src/gen/java']
Run Code Online (Sandbox Code Playgroud)

JavaPoet sa 用于生成.java源文件的Java API 。它仅用作build.gradle文件的示例库。


gab*_*sky 12

Gradle 4.6的方法略有不同:

sourceSets {
    main {
        java {
            srcDir 'src/main/java'
            srcDir 'build/swagger-code-dummy/src/main/java'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我必须使用"/ main/java"子目录指定目录,否则gradle/intellij没有设置正确的路径.

也许这也有助于别人:)


Fre*_*ger 5

sourceSets.main.java.srcDirs = ['build / jasper','src / main / java']