簡體   English   中英

使用Gradle發布工件(帶有源代碼和JavaDoc)

[英]Publishing artifacts(with sources and javadoc) with gradle

我正在嘗試創建gradle文件以發布我的工件( .jarsources.jarjavadoc.jar )。

到目前為止,我已經能夠編寫此gradle文件:

plugins {
    id 'java'
    id 'eclipse'
    id 'maven-publish'
    id 'net.nemerosa.versioning' version '2.5.1'
}

targetCompatibility = 1.8

eclipse {
    project {
        name = 'OAuthz Library'
        natures 'org.eclipse.buildship.core.gradleprojectnature'
    }
    classpath {
        downloadSources = true
        downloadJavadoc = true

        defaultOutputDir = file('build-eclipse')
    }
    jdt {
        sourceCompatibility = 1.8
        targetCompatibility = 1.8
    }
}

repositories {
    mavenCentral()
}

dependencies {
    compile 'javax.servlet:javax.servlet-api:3.1.0'
    compile 'org.codehaus.jettison:jettison:1.3.7'
    compile 'org.apache.directory.api:api-all:1.0.0-M30'
    compile 'com.whalin:Memcached-Java-Client:3.0.2'
    compile group: 'org.mongodb', name: 'mongo-java-driver', version: '2.14.3'
    compile 'commons-configuration:commons-configuration:1.10'
}

group = 'com.living'
version = versioning.info.display

manifest {
    attributes 'Implementation-Title': 'OAuthz Library'
}

publishing {
    publications {
        mavenJava(MavenPublication) {

        }
    }
    repositories {
        maven {
            credentials {
                username 'user'
                password 'passwd'
            }
            url "$url"
        }
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = '3.1'
}

不過,我已經能夠將軟件包發布到存儲庫中:

  1. 已發布的程序包告訴我它沒有依賴性。
  2. 我想發布源代碼和Java文檔工件。

有任何想法嗎?

1)您包括一個發布塊,但不包含任何構件。 這樣,只會創建一個pom。 您需要在發布定義中包括一個from components.java

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java 
        }
    }
...

2)您需要首先創建工件:

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

然后將這些工件包括在您的出版物中:

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
            artifact sourcesJar
            artifact javadocJar
        }
    }
...

我使用星雲發布插件

plugins {
    id 'nebula.javadoc-jar' version '4.4.4'
    id 'nebula.source-jar' version '4.4.4'
}

如果您不想使用這些插件,則可以使用文檔中的代碼

tasks.create('sourceJar', Jar) {
    dependsOn tasks.classes
    from sourceSets.main.allSource
    classifier 'sources'
    extension 'jar'
    group 'build'
}
publishing {
    publications {
        nebula(MavenPublication) { // if maven-publish is applied
            artifact tasks.sourceJar
        }
        nebulaIvy(IvyPublication) { // if ivy-publish is applied
            artifact tasks.sourceJar
        }
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM