[英]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
插件)與maven
和maven-publish
,無論您喜歡什么。
重新測試–您始終可以針對您的私有存儲庫運行測試版本(單擊“設置我”按鈕以獲取有關如何設置Maven和/或Gradle進行解析的說明)。
另一個驗證將同步到Maven Central。 如果您的軟件包元數據有問題,它將失敗。
關於md5和sha1,我們沒有理由將可計算的元數據存儲為現代分發平台上的文件,但是在同步時將它們發送到Maven Central。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.