13

すべてのモジュールの依存関係と外部 jar を含む単一の jar を、実行可能な単一の実行可能 jar ファイルに構築することに興味がありますjava -jar myApp.jar

モジュール B に依存するモジュール A があります。現在、gradle を使用しており、build.gradleスクリプトは次のようになります。

    apply plugin: 'fatjar'
    description = "A_Project"
    dependencies {
      compile project(':B_Project')
      compile "com.someExternalDependency::3.0"
    }

gradleコマンドを使用してビルドするとclean build fatjar、期待どおりにファット jar 'A.jar' が作成されます。しかし、上記のように実行すると、次の ようになります。ファイルを変更して、メインクラスまたはマニフェストを指定するno main manifest attribute, in A.jar にはどうすればよいですか?build.gradle

4

2 に答える 2

17

私は自分でそれを理解しました:私はuberjar Gradleタスクを使用しました。今私のbuild.gradleファイルは次のようになります:

apply plugin: 'java'
apply plugin: 'application'

mainClassName  = 'com.organization.project.package.mainClassName'

version = '1.0'

task uberjar(type: Jar) {
    from files(sourceSets.main.output.classesDir)
    from {configurations.compile.collect {zipTree(it)}} {
        exclude "META-INF/*.SF"
        exclude "META-INF/*.DSA"
        exclude "META-INF/*.RSA"
}

manifest {
    attributes 'Main-Class': 'com.organization.project.package.mainClassName'
    }
}


dependencies {
compile project(':B_Project')
compile "com.someExternalDependency::3.0"
}

そして今、私はそれを次のコマンドで使用します:

クリーンビルドのuberjar

そして、それは1つの素敵な実行可能なjarを構築します:)

于 2014-07-02T07:12:16.090 に答える