私はここで大きな何かが欠落している可能性があります。しかし、私は(組織内の他のMavenベースのプロジェクトによって消費される)Mavenのリポジトリへの簡単なライブラリを公開するために苦労しています
私が見つけた最高のガイドでは、公式ウェブサイト上のGradleです:https://docs.gradle.org/current/userguide/publishing_maven.html
しかし、まだ多くの未回答の質問があります:
SNAPSHOTとリリースを区別するために存在しない方法は、if-else文を含める手動以外へのビルドされていませんか?
何ですか
from components.java
?IDEAは(コード・インテリジェンスがうまく機能の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を使用してビルドスクリプトを書くことができます:
- https://guides.gradle.org/migrating-build-logic-from-groovy-to-kotlin/
- https://docs.gradle.org/current/userguide/kotlin_dsl.html
私は非常に今後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")
// ...
}