【问题标题】:How to publish war and jar-classes artifacts in Gradle如何在 Gradle 中发布战争和 jar 类工件
【发布时间】:2015-11-23 22:59:03
【问题描述】:

在 Maven 中非常简单;只需添加一行

<attachClasses>true</attachClasses>

两个工件进入存储库 (doc)

我的 build.gradle 是:

group = 'org.gradle.sample'
version = '1.0'
apply plugin: 'war'
apply plugin: 'maven-publish'
jar.enabled = true
jar.classifier = 'classes'

repositories {
   mavenLocal()
}

publishing {
    publications {
        p1(MavenPublication) {
            from components.java
        }
        p2(MavenPublication) {
            from components.web
        }
    }
}

dependencies {
    compile 'org.hibernate:hibernate-core:3.6.7.Final'
}

命令:gradle jar publishToMavenLocal

与 Maven 类似,2 个工件进入存储库(publish-1.0.war 和 publish-1.0-classes.jar)此外,publish-1.0.pom 进入存储库但没有依赖项。最后,对 Hibernate 的依赖丢失了

例如,我创建了其他依赖于 publish 的 Maven 项目

<dependency>
  <groupId>org.gradle.sample</groupId>
  <artifactId>publish</artifactId>
  <version>1.0</version>
  <classifier>classes</classifier>
</dependency>                          

但是对hibernate没有依赖:

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ my-app ---

[INFO] com.mycompany.app:my-app:jar:1.0-SNAPSHOT

[INFO] - org.gradle.sample:publish:jar:classes:1.0:compile

[INFO](我希望休眠与它的依赖关系,但没有)


为什么 Gradle 不如 Maven 聪明?

【问题讨论】:

    标签: gradle


    【解决方案1】:

    我找到了可怜的解决方案:交换发布顺序

    publishing {
        publications {
            p1(MavenPublication) {
                from components.web
            }
            p2(MavenPublication) {
                from components.java
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-03-24
      • 2017-11-12
      • 1970-01-01
      • 2014-12-16
      • 2015-09-19
      • 2016-09-13
      • 2011-10-20
      • 2018-12-04
      • 1970-01-01
      相关资源
      最近更新 更多