在gradle中为每个项目类型配置清单

时间:2015-08-17 09:40:27

标签: gradle manifest

我正在尝试使用每个项目类型的gradle配置清单文件。

对于jar,很容易配置清单:

jar {
  manifest {
    attributes 'Implementation-Title': 'Gradle Corporate plugin',
              'Implementation-Version': version,
              'Built-By': System.getProperty('user.name'),
              'Built-Date': new Date(),
              'Built-JDK': System.getProperty('java.version'),
              'Built-Gradle': gradle.gradleVersion
  }
}

就像战争和耳朵一样容易。

我的问题是,我写了一个所有项目使用的公司插件。

在这个插件中,我需要为所有项目配置清单。

很容易遍历所有项目并确定项目类型,但是为特定项目和类型配置清单有点棘手。

project.allprojects {
    configureManifest(it)
}

我正在努力实现以下目标:

private configureManifest(Project project) {
if (isEarPlugin) {
    project.ear {
        manifest { }
    }
} else if (isWarPlugin) {
    project.war {
        manifest { }
    }
} else {
    project.jar {
        manifest { }
    }
}
}

1 个答案:

答案 0 :(得分:0)

以下两种方法可以解决问题。

我的耳朵:

private void doManifestEar(Project project) {
  project.plugins.withType(EarPlugin) {
    project.apply(plugin: 'java')
    project.ear {
      manifest {
        attributes 'Implementation-Title': project.projectDescription,
                'Implementation-Version': project.version,
                'Built-By': System.getProperty('user.name'),
                'Built-Date': new Date(),
                'Built-JDK': System.getProperty('java.version'),
                'Built-Gradle': project.gradle.gradleVersion
      }
    }
  }
}

为了我的战争:

private void doManifestWar(Project project) {
  project.plugins.withType(WarPlugin) {
    project.apply(plugin: 'java')
    project.war {
      manifest {
        attributes 'Implementation-Title': project.projectDescription,
                'Implementation-Version': project.version,
                'Built-By': System.getProperty('user.name'),
                'Built-Date': new Date(),
                'Built-JDK': System.getProperty('java.version'),
                'Built-Gradle': project.gradle.gradleVersion
      }
    }
  }
}