【问题标题】:Generate and consume gradle dependency without POM在没有 POM 的情况下生成和使用 gradle 依赖项
【发布时间】:2020-09-15 05:43:22
【问题描述】:

我正在尝试生成我的 Gradle 项目的 .jar,但是当它使用 Maven 发布生成时,它也会生成一个 .pom 文件。

问题是我有另一个项目,当它在仅查找 .jar 之前实现此依赖项时,现在它在所有其他项目中查找 .pom ,我想要做的是该项目停止生成 .pom使用“发布”任务或在实施时停止寻找 .pom 文件以供其他人使用。

这是在 Artifactory 项目 A 中生成 .jar 的代码,项目 B 中使用 A 并查找 .pom 的代码:

publishing {
    publications {
        mavenJava(MavenPublication) {
              groupId = 'com.proteccion.myproject'
              artifactId = 'myproject-base'
              version = '1.0.1'
            from components.java
        }   
    }
    repositories {
        maven {
            name = 'artifactory'
            url 'https://url/artifactory/MyProject'
            credentials {
                username System.getenv("ARTIFACTORY_USER") 
                password System.getenv("ARTIFACTORY_PWD")  
            }
        }
    }
}

repositories {
    jcenter()
    maven {
        url 'https://url/artifactory/MyProject'
        credentials {
                    username System.getenv("ARTIFACTORY_USER") 
                    password System.getenv("ARTIFACTORY_PWD")  
                }
    }
}

也许与此段的 Gradle 等效:

publishing {
    publications {
        mavenJava(MavenPublication) {
              groupId = 'com.proteccion.myproject'
              artifactId = 'myproject-base'
              version = '1.0.1'
            from components.java
        }   
    }

【问题讨论】:

    标签: java gradle jar publishing


    【解决方案1】:

    最后这对我有用:

    metadataSources {
                artifact()
            }
    

    强制只搜索 jar 文件。 完整配置:

    publishing {
    publications {
        mavenJava(MavenPublication) {
              groupId = 'com.company.myproject'
              artifactId = 'myproject-base'
              version = '1.0.1'
            from components.java
        }   
    }
    repositories {
        maven {
            name = 'artifactory'
            url 'https://url/artifactory/MyProject'
            credentials {
                username System.getenv("ARTIFACTORY_USER") 
                password System.getenv("ARTIFACTORY_PWD")  
            }
        }
    }
    }
    
    repositories {
    jcenter()
    maven {
        url 'https://url/artifactory/MyProject'
        credentials {
                    username System.getenv("ARTIFACTORY_USER") 
                    password System.getenv("ARTIFACTORY_PWD")  
                }
        metadataSources {
                artifact()
        }
    }
    }
    

    文档(示例 18): https://docs.gradle.org/current/userguide/dependency_management.html

    【讨论】:

      【解决方案2】:

      Example 17. Maven repository that supports artifacts without metadata

      repositories {
          maven {
              url "http://repo.mycompany.com/repo"
              metadataSources {
                  mavenPom()
                  artifact()
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2013-06-21
        • 2016-06-20
        • 2019-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-17
        • 1970-01-01
        • 2019-10-03
        相关资源
        最近更新 更多