4

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

我正在尝试实现一个 java 项目,它可以吐出几个不同的程序,这些程序部分依赖于我的其他项目。

为了简单起见,我希望将所有代码放在一个项目中,由 Gradle 运行,因此如果我对中央库(例如数据库连接器)进行更改,所有子程序都会自动接收更改。

一个示例可能如下所示:

项目:

  • 程序_A
  • 中央图书馆
  • 程序_B

输出:

  • program_A.jar(包括中央库)
  • program_B.jar(包括中央库)

现在我在为此找到正确的构建脚本时遇到了严重的麻烦,并且想知道这里是否有人可以帮助我。

PS:由于我是新手,如果我应该通过 Gradleproject 中的不同模块而不是 Gradleprojects 源文件中的不同包来实现这一点,请随时告诉我:)

4

3 回答 3

2

解决此问题的一种方法是创建一个根项目,其中包含其他三个项目。

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')
}

我的一个项目中有类似的设置,尽管“中央库”是根项目,子模块是测试环境。

于 2017-10-07T19:27:36.443 回答
0

如果我理解正确,您想要做的是,当您更改本地项目时,您希望其他项目看到这些详细信息。为此,您需要将项目发布到某种 repo,例如 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
            }
        }
    }
于 2017-10-06T12:26:21.237 回答
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/

于 2017-10-06T09:41:15.863 回答