Mavenの単純なJavaライブラリを公開

スロー:

私はここで大きな何かが欠落している可能性があります。しかし、私は(組織内の他のMavenベースのプロジェクトによって消費される)Mavenのリポジトリへの簡単なライブラリを公開するために苦労しています

私が見つけた最高のガイドでは、公式ウェブサイト上のGradleです:https://docs.gradle.org/current/userguide/publishing_maven.html

しかし、まだ多くの未回答の質問があります:

  • SNAPSHOTとリリースを区別するために存在しない方法は、if-else文を含める手動以外へのビルドされていませんか?

  • 何ですかfrom components.javaIDEAは(コード・インテリジェンスがうまく機能のMavenとは異なります)これらのDSLのほとんどにはオートコンプリートやドキュメントを付与するものではありません

  • どのように私は、認証が必要なプライベートリポジトリに公開していますか?私が使用しているブロックが存在しなければならないどこかを理解します:

        username = "${artifactory_user}"
        password = "${artifactory_password}"
    

値が読み出されていると ~/.gradle/gradle.properties

しかし、ここで私は、このブロックを置くのですか?

全体的に、私はここに行方不明何か、広く読まれているかもしれないいくつかのドキュメントは...自分自身をMavenの使っているようプロセスはかなり単純明快で、公式ドキュメントは、プロセス比較的簡単になり感じます

私の直感は、共通のそう何かがすでに合理的なデフォルト値を持つプラグインの中にカプセル化されなければならないと言うときのGradleで、私はリポジトリに公開する最も簡単なように感じるが、カスタマイズロジックのように感じるものはかなり多くを必要と

フランシスコ・マテオ:

私はすでにあなたの解決策を見つけた見たが、私の答えは、あなたの質問に詳細な回答を与えることを目指します。

SNAPSHOTとリリースを区別するために存在しない方法は、if-else文を含める手動以外へのビルドされていませんか?

正しい。if-else声明では、スナップショットとリリースビルドを区別する必要が正確に何です。Gradleでは自身が機能をバージョン管理の任意の並べ替えを提供していません。それは処理するために、あなたに任されているかのようなプラグイン星雲リリース

とは from components.java

  • from以下からのメソッド呼び出しでAbstractCopyTaskどのJarタスクタイプがのサブクラスです。
  • components再度、別のメソッド呼び出しです。あなたが実際に呼んでいるgetComponents()Project
    • components.java以下のための糖ですcomponents.getByName("java")これは、動的/魔法の作品のGroovy

IDEAは(コード・インテリジェンスがうまく機能のMavenとは異なります)これらのDSLのほとんどにはオートコンプリートやドキュメントを付与するものではありません

これはグルービーの動的/弱く型付けによるものです。build.gradleファイルは、Groovyのを使用して書かれています。IntelliJのは、ビルドスクリプトのタイプを推測しようとしないが、それは完全にはできません。幸いにも、あなたは今、Kotlinを使用してビルドスクリプトを書くことができます:

私は非常に今後Kotlin DSLを使用してお勧めします。あなたが知っているだろうまさにすべてがどこから来ています。

どのように私は、認証が必要なプライベートリポジトリに公開していますか?

あいにくのためのドキュメントmaven-publishのプラグインは、単に単一の文章でそれに言及しています。そうであっても、それだけで、常に便利ではありませんAPIドキュメントにあなたを指示していますが、それを把握することができました。

https://docs.gradle.org/current/userguide/publishing_maven.html

また、リポジトリに接続するために必要とされている任意の認証の詳細を設定することができます。参照MavenArtifactRepositoryの詳細については。

そして最後に:

(...)値は、〜/ .gradle / gradle.propertiesから読み取られて

Gradleでは、プロパティを解決するために、その方法を消灯します。gradle.propertiesただ一つのGradleプロパティを探します多くの場所のです。あなたは下の詳細を見ることができますプロパティ上にセクションこちら


私はKotlin DSLを使用してあなたの答えの完全な例を提供することで締めくくるしたいと思います。また、使用してbuildscript { }述べたようにプラグインを適用する従来の方法で、ここであなたは、新しい/優先使用する必要がありplugins { }、今後のブロックを。詳細情報ここに

plugins {
    `maven-publish`
    id("org.jetbrains.kotlin.jvm") version "1.3.31"
}

group = "com.company"
version = "1.0.0-SNAPSHOT"

tasks.wrapper {
    gradleVersion = "5.6.1"
    distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
}

val sourcesJar by tasks.registering(Jar::class) {
    archiveClassifier.set("sources")
    from(sourceSets.main.get().allSource)
}

repositories {
    mavenCentral()
}

publishing {
    publications {
        register<MavenPublication>("mavenJava") {
            artifactId = "some-artifactId"
            from(components["java"])
            artifact(sourcesJar.get())
            pom {
                name.set("Project Name")
            }
        }
    }
    repositories {
        maven {
            url = uri("https://company.jfrog.io/company/maven-local")
            credentials {
                username = property("artifactory_user") as String
                password = property("artifactory_password") as String
            }
        }
    }
}

val test by tasks.getting(Test::class) {
    useJUnitPlatform()
}

dependencies {
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    // ...
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=314471&siteId=1