Gradle-一个项目,多个包,多个罐子



我问你一个非常基本的问题,但我希望你能抽出时间帮助我:

我正在尝试实现一个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 publishToMavenLocalgradle 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
}
}
}

最新更新