gradle发布不包含pom中的依赖项

时间:2016-09-14 07:56:06

标签: java maven gradle build artifactory

当我尝试将工件发布到个人工件存储库时, 当我查看存储库时,我注意到发布的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>

(从神器的视图选项卡中获取) 如你看到的 它没有我指定的存储库。

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

1 个答案:

答案 0 :(得分:4)

在看到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")

        }
    }
}