我问你一个非常基本的问题,但我希望你能抽出时间帮助我:
我试图实现一个java项目,它可以吐出几个不同的程序,这些程序部分依赖于我的其他项目。
为了简单起见,我希望将所有代码放在一个项目中,由Gradle运行,所以如果我对中央库(例如数据库连接器)进行更改,所有子程序会自动收到更改
示例可能如下所示:
项目:
输出:
现在我遇到了严重的麻烦,为此找到了正确的buildcript,并且想知道这里是否有人可以帮助我。
P.S。 :由于我是新手,如果我应该通过Gradleproject中的不同模块而不是Gradleprojects源文件中的不同包来实现这一点,请随时告诉我:)
答案 0 :(得分:1)
解决此问题的一种方法是拥有一个根项目,该项目包含其中的三个其他项目。
在settings.gradle
文件中指定子项目:
rootProject.name = 'RootProject'
include 'program_A'
include 'central_library'
include 'program_B'
有了这个,program_a
可以通过在central_library
中添加依赖项来依赖build.gradle
:
dependencies {
compile project(':central_library')
}
我在my projects之一中设置了类似的设置,尽管"中央库"是根项目,子模块是测试环境。
答案 1 :(得分:0)
创建根目录并将每个库或程序放入其自己的子目录中。 在每个子项目中创建一个gradle项目。 例如,您可以通过运行
创建骨架gradle项目gradle init --type=java-library
或
gradle init --type=java-application
然后在根目录中创建一个gradle多模块项目。基本上 只运行
gradle init
然后创建一个settings.gradle并列出那里的所有子项目。
这实际上在gradle文档中有很好的描述: https://guides.gradle.org/creating-multi-project-builds/
答案 2 :(得分:0)
如果我理解正确,您要做的是,当您更改本地项目时,您希望其他项目查看这些详细信息。为此,您需要将项目发布到某种回购,例如maven repo。您可以从命令行gradle publishToMavenLocal
或gradle build pTMl
执行此操作。您也可以在build.gradle文件中执行以下操作:
task sourceJar (type : Jar) {
classifier = constants.extSources
from sourceSets.main.allSource
}
publications {
mavenJava(MavenPublication) {
from components.java
artifact(sourceJar) {
classifier "sources" //classifier = constants.extSources
}
}
}