2016-07-15 289 views
0

所以,如果我在Maven构建一个罐子,例如说jackson-core-2.5.1.jar,我找到了神器如下:如何获取gradle以使用依赖元数据填充jar?

META-INF/maven/ 
META-INF/maven/com.fasterxml.jackson.core/ 
META-INF/maven/com.fasterxml.jackson.core/jackson-core/ 
META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.properties 
META-INF/maven/com.fasterxml.jackson.core/jackson-core/pom.xml 

摇篮,但似乎并没有建立这个数据。问题是我们有几个组件,包括一个父项目,它们不在同一个SCM位置。对于我们庞大而复杂的构建,如果没有元数据,Gradle如何知道一个SCM位置中的本地构建工件取决于另一个本地构建工件?什么是Gradle的方式来管理这种情况?

回答

1

存储库包含一个单独的副本pom.xml。它通常位于磁盘物理结构中的JAR文件旁边。这适用于Nexus或Artifatory等二进制存储库,也适用于本地Maven存储库(位于$HOME/.m2/repo下)。

如果由于某种原因想要复制Maven的行为,您可以告诉Gradle创建这些文件。我们在subprojects闭包中使用这个定制,它可以配置我们的多项目Gradle构建。

jar { 
    // until we have better solution 
    // https://discuss.gradle.org/t/jar-task-does-not-see-dependency-when-using-maven-publish/11091 
    if (project.tasks.findByName('generatePomFileForMavenJavaPublication')) { 
     dependsOn 'generatePomFileForMavenJavaPublication' 
    } else { 
     project.tasks.whenTaskAdded { addedTask -> 
      if (addedTask.name == 'generatePomFileForMavenJavaPublication') { 
       project.tasks.jar.dependsOn 'generatePomFileForMavenJavaPublication' 
      } 
     } 
    } 
    into("META-INF/maven/$project.group/$project.archivesBaseName") { 
     /* 
     from generatePomFileForMavenJavaPublication 
     */ 
     from new File(project.buildDir, 'publications/mavenJava') 
     rename ".*", "pom.xml" 

    } 
} 

它会更简单,如果没有问题与正在创建懒惰有时generatePomFileForMavenJavaPublication任务。你需要检查如何创建你的属性文件。我想你可以从一个正在运行的Gradle进程转储属性。

+0

不适用于它自己。我错过了什么? – user447607

+0

OIC。谢谢。我几乎得到了这个工作。 :-) – user447607

相关问题