不推荐使用的动态属性:" archiveName" on" source set' war'"

时间:2014-09-10 12:20:01

标签: groovy gradle

我编写了gradle插件,用于配置war项目。我的问题涉及战争任务的配置。我想更改archiveName和类路径。

class MyPlugin implements Plugin<Project> {
    void apply(Project project) {
        project.plugins.apply('war')
        // do something
        configureConfigurations(project)
        configureTask(project)
    }
    void configureTask(final Project project) {
        project.war {
            archiveName = "${project.war.baseName}.${project.war.extension}"
            classpath = project.sourceSets.main.runtimeClasspath - project.configurations.providedRuntime - project.configurations.earModuleRuntime - project.configurations.earLibRuntime
        }
        project.war {
            doFirst {
                // just generating the manifest file
            }
        }
    }

    void configureConfigurations(final Project project) {
        project.configurations {
            earModuleCompile
            earModuleRuntime.extendsFrom(earModuleCompile)
            earLibCompile
            earLibRuntime.extendsFrom(earLibCompile)
        }
    }
}

由于某种原因,gradle将第一个war块解释为源集。这就是为什么它在源集&#39; war&#39;上创建一个名为archiveName和classpath的新属性。我可以用project.war.archiveName修复它。但我仍然不知道为什么地球上的东西第一个战争块是一个源集合而第二个战争块是doFirst是任务。

使用此插件的构建文件仅在earLibRuntime

上定义了一些依赖项

如果有人能向我解释,那就太好了。

0 个答案:

没有答案