Gradle 如何隐藏多项目渐变应用程序

Gradle 如何隐藏多项目渐变应用程序,gradle,shadow,multi-project,Gradle,Shadow,Multi Project,我有一个build.gradle文件,用于替换由2个模块和第三个子模块组成的旧maven pom.xml。我这样把它移到了格拉德尔: apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'groovy' buildscript { repositories { mavenCentral() } dependencies { classpath 'org.gradle.plu

我有一个build.gradle文件,用于替换由2个模块和第三个子模块组成的旧maven pom.xml。我这样把它移到了格拉德尔:

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' }
}

我想知道当我从命令行运行“gradleshadow”时,如何获得一个“shadowd”包,就像我运行“gradleshadow”时得到一个空罐子一样。有什么想法吗?

看起来您想创建一个影子Jar,它包含由
:mainprj
创建的Jar及其依赖项。在这种情况下,您可能必须将插件应用于
:mainprj
,而不是根项目。另外,除非您在根项目中有代码,否则
java
groovy
插件不应该应用在那里(但是
eclipse
应该应用)。

您到底有什么问题?如果我运行“gradle shadow”,我会得到一个空jar谢谢,我将“shadow”任务移到了项目mainprj下,它就可以工作了。无论如何,我仍然需要在根上使用java和groovy