使用Gradle将模块化库发布到Maven

热键

假设我正在使用Gradle进行模块化库开发。在我的根项目我有子项目geometryalgorithmsvisualizer,我想每发布一个罐子神器。

到目前为止,我build.gradle有以下部分:

apply plugin: 'maven-publish'
publishing {
    publications {
        publishDemos(MavenPublication) {
            groupId 'ru.ifmo.ctddev.igushkin.cg'
            artifactId 'geometry'
            version globalVersion
            artifact project(':geometry').tasks.getByName('jar')
        }
        publishAlgorithms(MavenPublication) {
            groupId 'ru.ifmo.ctddev.igushkin.cg'
            artifactId 'algorithms'
            version globalVersion
            artifact project(':algorithms').tasks.getByName('jar')
        }
        publishVisualizer(MavenPublication) {
            groupId 'ru.ifmo.ctddev.igushkin.cg'
            artifactId 'visualizer'
            version globalVersion
            artifact project(':visualizer').tasks.getByName('jar')
        }
    }
}

我的第一个问题:描述出版物的方式是否更短?例如,我想指出,对于每个子项目,我都需要一个带有artifactId名称集的出版物


接下来,我的子项目彼此依赖,algorithms并且都visualizer依赖于from的类geometry,但是此时jars不包含依赖项,例如,用户必须向两者都添加依赖项,geometry并且algorithms如果他们想使用algorithms

因此,有没有一种方法可以提供某种自动依赖关系,以便添加algorithms也可以添加geometry如果是,该怎么办?如果没有,提供模块化库的惯用方式是什么?我应该用依赖项组装罐子吗?

UPD:我对,而不是artifact ...我应该使用from project(':...').components.java,因为它会同时获取工件和依赖项吗?如果使用,如何分别选择依赖项artifact ...

愤怒

通过将相同的发布配置注入到每个子项目中,可以减少冗长的发布声明。例如,对于具有以下结构的多重构建项目:

ROOT
│   build.gradle
│   settings.gradle
├───subA
│       build.gradle
├───subB
│       build.gradle
└───subC
        build.gradle

在您的根目录中build.gradle,您可以执行以下操作:

apply plugin:'maven-publish'

subprojects{
    publishing {
        publications {
            "$project.name"(MavenPublication) {
                groupId project.group
                artifactId project.name
                version project.version
                from components.java
            }
        }
    }
}

每个子项目都定义自己的groupid和版本,如下所示:

group = 'org.test.sample.A'
version = '1.0'

artifactId是从子项目名称中选取的。运行gradle publish会生成以下结构的存储库:

org
└───test
    └───sample
        ├───A
        │   └───subA
        │       └───1.0
        │               subA-1.0.jar
        │               subA-1.0.pom
        ├───B
        │   └───subB
        │       └───1.0
        │               subB-1.0.jar
        │               subB-1.0.pom
        └───C
            └───subC
                └───1.0
                        subC-1.0.jar
                        subC-1.0.pom

依存关系

此配置还自动处理依赖项。例如,如果在子项目中,subA您有:

dependencies{
    compile project(':subB')
}

由于我使用from components.java而不是artifact,因此插件知道要查找依赖项并为此生成一个pom subA,包括:

  <dependencies>
    <dependency>
      <groupId>org.gradle.sample.B</groupId>
      <artifactId>subB</artifactId>
      <version>1.0</version>
      <scope>runtime</scope>
    </dependency>
  </dependencies>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android库-使用Gradle将多个变体发布到本地Maven存储库

来自分类Dev

无法使用Gradle将工件发布到Nexus Maven存储库

来自分类Dev

Gradle使用SCP和私钥发布到Maven存储库

来自分类Dev

使用Gradle将WAR文件发布到Maven Repo

来自分类Dev

使用Gradle将Java工件发布到Maven Local

来自分类Dev

如何配置moditect-maven-plugin以在模块化应用程序中使用自动值库?

来自分类Dev

使用子模块发布到Maven Central

来自分类Dev

将多模块Gradle库打包到单个模块中

来自分类Dev

bintray-将多模块Gradle工件发布到JCenter

来自分类Dev

将库发布到 maven 存储库而不是 JCenter

来自分类Dev

使用Gradle将jar发布到MavenLocal

来自分类Dev

将Spring模块化应用程序部署到tomcat后,“ Autowire”失败

来自分类Dev

将Spring模块化应用程序部署到tomcat后,“ Autowire”失败

来自分类Dev

使用aar和源jar将Android库发布到Maven

来自分类Dev

对间隔使用模块化算法

来自分类Dev

Gradle-插件maven-publish:如何仅将特定出版物发布到资源库

来自分类Dev

Gradle-插件maven-publish:如何仅将特定出版物发布到资源库

来自分类Dev

将Android库从JCenter发布到Maven Central

来自分类Dev

仅将 JAR 发布到 Maven 存储库

来自分类Dev

如何将gradle模块集成到Maven项目中?

来自分类Dev

eclipse nullpointer异常,用于模块化Maven项目更新

来自分类Dev

有什么办法,我的模块化磁带库的用户可以到尚未导出访问类?

来自分类Dev

使Bash模块化

来自分类Dev

NodeJS模块化

来自分类Dev

模块化的矮人

来自分类Dev

模块化角度

来自分类Dev

模块化应用

来自分类Dev

使Bash模块化

来自分类Dev

迭代模块化

Related 相关文章

热门标签

归档