2016-09-14 101 views
2

当我尝试将工件发布到个人设备库时, 当我查看存储库时,我注意到发布的pom不包括该proeject所具有的依赖关系, can你请解释我的构建有什么问题?gradle发布不包括pom中的依赖关系

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     // Add this line 
     classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.0.1" 
    } 
} 



// Apply the java plugin to add support for Java 
apply plugin: 'java' 
apply plugin: 'com.jfrog.artifactory' 
apply plugin: 'maven-publish' 
apply plugin: 'maven' 
group 'CaptchaSolving' 
version '1.0.0' 



sourceCompatibility = 1.5 

// In this section you declare where to find the dependencies of your project 
repositories { 
    // Use 'jcenter' for resolving your dependencies. 
    // You can declare any Maven/Ivy/file repository here. 
    jcenter() 
    maven { 
     url 'https://artifactory.lyoko.pw:443/libs-release-local' 
     credentials { 
      username = "${artifactory_username}" 
      password = "${artifactory_password}" 
     } 
    } 
} 



sourceSets { 
    main { 
     java { 
      srcDir 'src/' 
     } 
    } 
} 






// In this section you declare the dependencies for your production and test code 
dependencies { 
    compile(group: 'com.pragone.custom', name: 'jpHash', version: '1.0.1') 
} 



task assembleRelease(type: Jar, dependsOn:classes) { 
    classifier = 'release' 
    manifest { 
     attributes 'Implementation-Title': project.group, 
       'Implementation-Version': version, 
       'Main-Class': '' 
    } 
    baseName = project.name 
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 
    with jar 


} 



artifacts { 
    archives assembleRelease 
} 

def libraryGroupId = group 
def libraryArtifactId = rootProject.name 
def libraryVersion = version 
publishing { 
    publications { 
     jar(MavenPublication) { 
      groupId libraryGroupId 
      version libraryVersion 
      artifactId libraryArtifactId 
      artifact("$buildDir/libs/${artifactId}-${libraryVersion}.jar") 

     } 
    } 
} 

artifactory { 
    contextUrl = 'https://artifactory.lyoko.pw' 
    publish { 
     repository { 
      repoKey = 'libs-release-local' 

      username = artifactory_username 
      password = artifactory_password 
     } 
     defaults { 
      publications('jar') 
      publishArtifacts = true 

      properties = ['qa.level': 'basic', 'dev.team': 'core'] 
      publishPom = true 
     } 
    } 
} 

你可以看到,只有一个依赖,

和得到出版的POM是:

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>CaptchaSolving</groupId> 
    <artifactId>CaptchaSolving</artifactId> 
    <version>1.0.0</version> 
</project> 

(从artifactory的视图选项卡获得) ,你可以请参阅 它没有我指定的存储库。

所以我只是想要生成的pom包含这个项目所依赖的存储库和依赖关系。

+1

我不熟悉的'classpath'范围。你的意思是'编译'? – chrylis

+0

不,那个直接来自工匠的例子,请看下面的编译词的依赖关系,那就是我正在尝试包含在最后的pom中的那个。 –

回答

2

看到this post后,我设法解决了这个问题,并尝试了几件事情。

它的出现,该块:

publishing { 
    publications { 
     jar(MavenPublication) { 
      groupId libraryGroupId 
      version libraryVersion 
      artifactId libraryArtifactId 
      artifact("$buildDir/libs/${artifactId}-${libraryVersion}.jar") 

     } 
    } 
} 

失踪:

from components.java 

所以最终的解决方案是:

publishing { 
    publications { 
     jar(MavenPublication) { 
      from components.java 
      groupId libraryGroupId 
      version libraryVersion 
      artifactId libraryArtifactId 
      artifact("$buildDir/libs/${artifactId}-${libraryVersion}.jar") 

     } 
    } 
}