1

我有一个 build.gradle 文件,用于替换由 2 个模块和第三个子模块组成的旧 maven pom.xml。我以这种方式将其移至 gradle:

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'groovy'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.gradle.plugins:shadow:0.7.4'
    }
}

apply plugin: 'shadow'

sourceCompatibility = 1.7
version = '0.1'
jar {
    manifest {
        attributes 'Implementation-Title': 'mainprj', 'Implementation-Version': version
    }
}

subprojects {
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'groovy'

    repositories {
        mavenCentral()
        maven { url 'http://nexus.codehaus.org/snapshots' }
    }

    dependencies {
    //some deps here
    }
}

project(':mainprj') {
    dependencies {
        compile project(':subprj1')
        compile project(':subprj2')
    }
}

project(':subprj1') {
    dependencies {
    compile project(':subprj3')
        //deps here
    }
}

project(':subprj2') {
    dependencies {
    compile project(':subprj3')
        //deps here
    }
}

project(':subprj3') {
    dependencies {
        //deps here
    }
}

shadow {
    exclude 'META-INF/*.SF'
    exclude 'META-INF/*.DSA'
    exclude 'META-INF/*.RSA'

    transformer(org.gradle.api.plugins.shadow.transformers.AppendingTransformer) { resource = 'META-INF/stuff' }
}

我想知道当我从命令行运行“gradle shadow”时如何获得一个“shadowed”包,就像我运行“gradle shadow”一样,我得到一个空罐子。任何想法?

4

1 回答 1

1

It looks like you want to create a shadow Jar comprising the Jar created by :mainprj and its dependencies. In this case, you'd probably have to apply the plugin to :mainprj, not the root project. Also, unless you do have code in the root project, the java and groovy plugins shouldn't be applied there (but eclipse should).

于 2014-02-05T09:23:47.027 回答