簡體   English   中英

如何遷移gradle發布腳本以將OSS庫發布到Bintray的JCenter而不是Sonatype的Maven Central

[英]How to migrate gradle publication script to publish OSS library to Bintray's JCenter instead of Sonatype's Maven Central

我是Java 8 java.time JSP標簽庫的管理員 我自己出版圖書館的經驗很少。 對於該庫的發布,我進行了一些研究,並以一個gradle構建腳本結尾,您可以在GitHub中檢查該腳本。 這個過程有點笨拙,但最終還是可以的。

似乎已經大致了解到jcenter()存儲庫正在引起很多關注。 可能是因為android。 無論如何,我看到了令人鼓舞的博客文章,並決定嘗試一下,將該庫遷移到由Maven Central安裝的JCenter發布。 應該很容易。

至少對我來說不是。 可能是我對Maven,工件和所有其他東西的了解不佳。 無論如何,我花了一些時間進行研究,並提出了一個新的gradle版本,可以發布到我的Bintray Maven存儲庫中。 如果我沒記錯的話,這是發布到JCenter的第一步。

這是我到目前為止的內容:

plugins {
    id "com.jfrog.bintray" version "1.6"
}

apply plugin: 'java'
apply plugin: 'maven-publish'

group = 'net.sargue'
version = '1.1.2'

sourceCompatibility = 1.8
compileJava.options.encoding = 'UTF-8'
compileTestJava.options.encoding = 'UTF-8'

repositories {
    jcenter()
}

configurations {
    testCompile.extendsFrom compileOnly
}

dependencies {
    compileOnly 'javax.servlet:javax.servlet-api:3.0.1'
    compileOnly 'javax.servlet.jsp:javax.servlet.jsp-api:2.2.1'
    compileOnly 'javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1'

    testCompile 'junit:junit:4.12'
    testCompile 'org.springframework:spring-test:4.1.7.RELEASE'
}

jar {
    manifest {
        attributes 'Implementation-Title': 'Java 8 java.time JSP tags',
                   'Implementation-Version': version
    }
}

task javadocJar(type: Jar) {
    classifier = 'javadoc'
    from javadoc
}

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

publishing {
    publications {
        MyPublication(MavenPublication) {
            from components.java
            artifact sourcesJar
            artifact javadocJar
            artifactId 'java-time-jsptags'

            pom.withXml {
                asNode().children().last() + {
                    resolveStrategy = Closure.DELEGATE_FIRST

                    name 'Java 8 java.time JSP tags'
                    description 'JSP tag support for Java 8 java.time (JSR-310)'
                    url 'https://github.com/sargue/java-time-jsptags'

                    scm {
                        connection 'scm:git:git@github.com:sargue/java-time-jsptags.git'
                        developerConnection 'scm:git:git@github.com:sargue/java-time-jsptags.git'
                        url 'git@github.com:sargue/java-time-jsptags.git'
                    }

                    licenses {
                        license {
                            name 'The Apache License, Version 2.0'
                            url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                        }
                    }

                    developers {
                        developer {
                            id 'sargue'
                            name 'Sergi Baila'
                            email 'sargue@gmail.com'
                        }
                    }
                }
            }
        }
    }
}

bintray {
    user = BINTRAY_USER
    key = BINTRAY_KEY
    publications = ['MyPublication']
    pkg {
        repo = 'maven'
        name = 'java-time-jsptags'
        licenses = ['Apache-2.0']
        vcsUrl = 'https://github.com/sargue/java-time-jsptags.git'
        version {
            name = project.version
            desc = 'Java 8 java.time JSP tags'

            gpg {
                sign = true
                passphrase = BINTRAY_GPG
            }
        }
    }
}

您可以在我的公共Bintray Maven存儲庫中找到最新出版物的結果。 您可以將其與Maven Central中當前可用的相同版本的文件進行比較。

到目前為止,如果您尚未閱讀任何內容,則表示祝賀。 對於那個很抱歉。

我的問題:

gradle構建腳本是否正確以及正確/規范的方式? 鑒於該庫非常簡單,我發現構建腳本龐大而笨拙。 它應該更容易,甚至有一個gradle插件。 但是新腳本比Maven中央腳本更長

*.md5*.sha1文件呢? 將由JCenter,Maven Central,同步過程生成...還是應該這樣做?

鑒於存儲庫上沒有未發布的功能,有某種方法可以測試所有這些而不發布庫的實際版本? (並且有充分的理由,是嗎?

首先,要弄清楚它的出色工作。 看起來不錯,運作良好。

它比另一個更大,不是因為您使用了Bintray而不是Central,而是因為您使用了maven-publish插件而不是maven ,並且功能更強大,因此配置更加冗長。 您可以將Bintray(和bintray插件)與mavenmaven-publish ,無論您喜歡什么。

重新測試–您始終可以針對您的私有存儲庫運行測試版本(單擊“設置我”按鈕以獲取有關如何設置Maven和/或Gradle進行解析的說明)。

另一個驗證將同步到Maven Central。 如果您的軟件包元數據有問題,它將失敗。

關於md5和sha1,我們沒有理由將可計算的元數據存儲為現代分發平台上的文件,但是在同步時將它們發送到Maven Central。

暫無
暫無

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

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