簡體   English   中英

為多模塊 gradle 項目創建單源 jar

[英]Creating a single source jar for a multi-module gradle project

我有一個多模塊 gradle 項目設置,如下所示:

Module A (Parent)
-build.gradle
-settings.gradle
+Module B
--src
---main
----java
----kotlin
--build.gradle
+Module C
--src
---main
----java
----kotlin
--build.gradle

在這種情況下,模塊 B 對模塊 C 具有編譯時間依賴性。

我想創建一個源 jar 包括來自所有子項目的源以發布到我的存儲庫。

在單個模塊構建中,我已將以下內容添加到我的項目中,但將其添加到所有子項目中不會導致在 jar 生成的源中收集源集:

sourceSets {
    main.kotlin.srcDirs += 'src/main/kotlin'
    main.java.srcDirs += 'src/main/java'
}

task sourcesJar(type: Jar) {
    from sourceSets.main.kotlin
    from sourceSets.main.java
    archiveClassifier = 'sources'
}

我怎樣才能做到這一點? ShadowJar 有效,但不幸的是,據我所知,它不提供創建源 jar 的選項。

我們找到了解決方案 - 將子模塊部署為獨立源 jar 並單獨包含它們。

例如,在每個子模塊中:

sourceSets {
    main.kotlin.srcDirs += 'src/main/kotlin'
    main.java.srcDirs += 'src/main/java'
}

task sourcesJar(type: Jar) {
    from sourceSets.main.kotlin
    from sourceSets.main.java
    archiveClassifier = 'sources'
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId = rootProject.group
            artifactId = "$rootProject.name-$project.name"
            version = rootProject.project.version
            from components.java
            artifact sourcesJar
        }
    }

暫無
暫無

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

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