2016-04-29 10 views
0

私はJava 8 java.time JSP tagsライブラリのmantainerです。私は自分でライブラリを公開した経験はほとんどありません。このライブラリの公開に関しては、私はいくつかの調査を行い、グラデルビルドスクリプトthat you can check in GitHubで終了しました。プロセスはちょっとぎこちないですが、最終的には機能します。OSSライブラリをBatrayのJCenterにSonatypeのMaven Centralの代わりに公開するために、gradleの公開スクリプトを移行する方法

jcenter()リポジトリが多くの注目を集めているという一般的な理解があるようです。おそらくアンドロイドのため。とにかく私はan encouraging blog postを見て、それを試して、そのライブラリをMaven CentralのJCenter出版機関に移行することに決めました。簡単にする必要があります。

少なくとも私にとってはそうではありません。おそらく、私のMaven、人工物、そしてすべてのものに関する知識が不十分な私のせいだろう。とにかく私は数時間の研究をして、Bintray Mavenリポジトリに公開するために新しいgradleビルドを作りました。私が間違っていない場合、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:[email protected]:sargue/java-time-jsptags.git' 
         developerConnection 'scm:git:[email protected]:sargue/java-time-jsptags.git' 
         url '[email protected]: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 '[email protected]' 
         } 
        } 
       } 
      } 
     } 
    } 
} 

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 
      } 
     } 
    } 
} 

あなたはmy public Bintray maven repositoryの最新出版物の結果を見つけることができます。これをthe same version currently available on Maven Centralのファイルと比較することができます。私はまだ質問を策定していないので、あなたが、今のところこれを読んでいる場合

おめでとうございます。申し訳ありません。

私の質問:

Gradleのビルドスクリプトが正しく、標準的な/適切な方法はありますか?ライブラリが非常にシンプルであることを考えると、ビルドスクリプトは巨大で厄介なものになっていました。それはより簡単であると考えられており、さらにグラデルプラグインを持っています。しかし、新しいスクリプトは、より長く、中央のものよりも大きい。

ファイル*.md5*.sha1はどうなりますか? JCenter、Maven Central、同期処理によって生成されます...それともどうすればいいですか?

リポジトリに未公開機能がないと仮定して、実際のバージョンのライブラリを公開せずにこれらのすべてをテストする方法はありますか? (そして正当な理由で、左の人は誰ですか?)

答えて

1

まず、素晴らしい仕事はそれを考え出します。それはよく見え、うまくいく。

セントラルの代わりにBintrayを使用しているのではなく、mavenの代わりにプラグインを使用し、より強力であるため、設定はもう少し冗長です。あなたが好むものは何でも、mavenmaven-publishの両方でBintray(およびbintrayプラグイン)を使用することができます。

再テスト - 私のリポジトリに対してテストビルドを実行することができます(Set Me Upボタンをクリックして、MavenやGradleを設定して解決する方法についての説明を参照してください)。

別の検証は、Mavenの中央に同期されます。あなたのパッケージのメタデータに問題があると失敗します。

Re md5とsha1では、計算可能なメタデータを最新の配布プラットフォームにファイルとして保存する理由はありませんが、同期するとMaven Centralに送信されます。

関連する問題