我问你一个非常基本的问题,但我希望你能抽出时间帮助我:
我正在尝试实现一个java项目,它可以产生几个不同的程序,这些程序部分依赖于我的其他项目。
为了保持简单,我希望所有代码都在一个项目中,由Gradle运行,所以如果我对中央库(例如数据库连接器)进行更改,所有子程序都会自动接收更改。
例如:
项目:
- 程序_A
- central_library
- 程序_B
输出:
- program_A.jar(包括中央库)
- program_B.jar(包括中央库)
现在我很难找到正确的构建脚本,想知道这里是否有人能帮我。
第页。S.:由于我是新手,如果我应该通过Gradleproject中的不同模块而不是Gradleprojects源文件中的不同包来实现这一点,请随时告诉我:)
实现这一点的一种方法是拥有一个根项目,其中包含其他三个项目。
在其settings.gradle
文件中指定子项目:
rootProject.name = 'RootProject'
include 'program_A'
include 'central_library'
include 'program_B'
有了这一点,program_a
可以通过在其build.gradle
:中添加依赖项来依赖central_library
dependencies {
compile project(':central_library')
}
我的一个项目中也有类似的设置,尽管"中央库"是根项目,子模块是测试环境。
创建一个根目录,并将每个库或程序放入自己的子目录中。在每个子项目中创建一个放坡项目。例如,您可以通过运行来创建骨架渐变项目
gradle init --type=java-library
或
gradle init --type=java-application
然后在根目录中创建一个渐变多模块项目。大体上仅运行
gradle init
然后创建一个settings.gradle并列出那里的所有子项目。
这在gradle文档中得到了很好的描述:https://guides.gradle.org/creating-multi-project-builds/
如果我理解正确的话,您想做的是,当您更改本地项目时,您希望其他项目看到这些细节。为此,你需要将你的项目发布到某种回购中,比如maven回购。可以从命令行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
}
}
}