2017-06-27 14 views
7

私は8つの子プロジェクトと設定されたshadowjarタスクを持つgradleプロジェクトを持っていて、 "すべて"のjarファイルを作成しています。トップレベルプロジェクトはそのすべての子供たちへの依存関係を持つように設定され、これは何が含まれるようにshadowjar伝えます:gradles ShadowJarタスクを作成するには、その子のソースとjavadocも作成しますか?

project(':') { 
    dependencies { 
     compile project(':jfxtras-agenda') 
     compile project(':jfxtras-common') 
     compile project(':jfxtras-controls') 
     compile project(':jfxtras-icalendarfx') 
     compile project(':jfxtras-icalendaragenda') 
     compile project(':jfxtras-menu') 
     compile project(':jfxtras-gauge-linear') 
     compile project(':jfxtras-font-roboto') 
    } 
} 

shadowJar { 
    classifier = null // do not append "-all", so the generated shadow jar replaces the existing jfxtras-all.jar (instead of generating jfxtras-all-all.jar) 
} 

これは正常に動作しますが、それは、関連するソースとJavadocを持っていないため、Mavenの中央には、すべてのjarファイルを拒否しています瓶。

gradleもソースとjavadocを生成するように教えてください。 ShadowJarのドキュメンテーションによれば、デフォルトでこれを行うべきだという。

+0

javadoc jarを生成してshadowJarからMaven Centralにアップロードする方法についての回答は見つかりましたか?私も知りたい! – Jorn

+2

それはまだ問題です。 Mavenへの切り替えを真剣に考えてください。特に、Java 9とEclipseの統合はまだまだバグです。 – tbeernot

+1

'ShadowJar'プラグインで作成されたfat-jarには、依存関係ではなくローカルプロジェクトの依存関係のみが含まれていますか?そうであれば、ShadowJarが必要なのはまったく疑問です。おそらく、サブプロジェクトのコンパイル、ソース、javaDocタスクを出力し、自分でファットジャーを作成する単純なjarタスクを作成することができます。 – dpr

答えて

4

シャドウプラグインには、fat sources/javadocs jarsをビルドする機能がないようです。

以下、私はfat javadocとソースjarをビルドするいくつかの短いタスク(javadocJarsourcesJar)を提供します。彼らは常にshadowJarの後に実行されるようにリンクされています。しかし、シャドウジャープラグインに依存することはありません。

subprojects { 
    apply plugin: 'java' 
} 

// Must be BELOW subprojects{} 
task alljavadoc(type: Javadoc) { 
    source subprojects.collect { it.sourceSets.main.allJava } 
    classpath = files(subprojects.collect { it.sourceSets.main.compileClasspath }) 
    destinationDir = file("${buildDir}/docs/javadoc") 
} 

task javadocJar(type: Jar, dependsOn: alljavadoc) { 
    classifier = 'javadoc' 
    from alljavadoc.destinationDir 
} 

task sourcesJar(type: Jar) { 
    classifier = 'sources' 
    from subprojects.collect { it.sourceSets.main.allSource } 
} 

shadowJar.finalizedBy javadocJar 
shadowJar.finalizedBy sourcesJar 

注意、subprojectsセクションでは、すでにあなたのサブプロジェクト内のjavaプラグインを適用した場合でも、を必要です。

また、サブプロジェクトが依存するサードパーティライブラリのjavadocは含まれていません。しかし、通常、とにかくやりたいとは思わないでしょう。

+0

私は一見して見ていきますが、実際の作業が優先されます – tbeernot

+0

これは一つの注意点に非常に近いです.JFXtrasはascididocletを使ってjavadocを生成します。したがって、通常のjavadocエンジンではdocが解析されなかったため、Javadocの生成は失敗します。 144行目を参照してください。https://github.com/JFXtras/jfxtras/blob/8.0/build.gradle – tbeernot

+0

エラーメッセージを表示してください。また、私の例では、タスクはサブプロジェクトの句の外にあることに注意してください。あなたのファイルには、それらが内部にあります。 –

関連する問題