下面列出了怎么用org.gradle.api.tasks.bundling.War的API类实例代码及写法,或者点击链接到github查看源代码。
private void configureAbstractJettyTask(final Project project, final JettyPluginConvention jettyConvention, AbstractJettyRunTask jettyTask) {
jettyTask.setDaemon(false);
jettyTask.setReload(RELOAD_AUTOMATIC);
jettyTask.setScanIntervalSeconds(0);
jettyTask.getConventionMapping().map("contextPath", new Callable<Object>() {
public Object call() throws Exception {
return ((War) project.getTasks().getByName(WarPlugin.WAR_TASK_NAME)).getBaseName();
}
});
jettyTask.getConventionMapping().map("httpPort", new Callable<Object>() {
public Object call() throws Exception {
return jettyConvention.getHttpPort();
}
});
jettyTask.getConventionMapping().map("stopPort", new Callable<Object>() {
public Object call() throws Exception {
return jettyConvention.getStopPort();
}
});
jettyTask.getConventionMapping().map("stopKey", new Callable<Object>() {
public Object call() throws Exception {
return jettyConvention.getStopKey();
}
});
}
private void configureAbstractJettyTask(final Project project, final JettyPluginConvention jettyConvention, AbstractJettyRunTask jettyTask) {
jettyTask.setDaemon(false);
jettyTask.setReload(RELOAD_AUTOMATIC);
jettyTask.setScanIntervalSeconds(0);
jettyTask.getConventionMapping().map("contextPath", new Callable<Object>() {
public Object call() throws Exception {
return ((War) project.getTasks().getByName(WarPlugin.WAR_TASK_NAME)).getBaseName();
}
});
jettyTask.getConventionMapping().map("httpPort", new Callable<Object>() {
public Object call() throws Exception {
return jettyConvention.getHttpPort();
}
});
jettyTask.getConventionMapping().map("stopPort", new Callable<Object>() {
public Object call() throws Exception {
return jettyConvention.getStopPort();
}
});
jettyTask.getConventionMapping().map("stopKey", new Callable<Object>() {
public Object call() throws Exception {
return jettyConvention.getStopKey();
}
});
}
private void configureOverlay(WarOverlay overlay, Project otherProject) {
project.evaluationDependsOn(otherProject.getPath());
War otherWar = (War) otherProject.getTasks().getByName(WAR_TASK_NAME);
configureOverlay(overlay, otherWar);
if (overlay.isEnableCompilation()) {
project.getDependencies().add(getClasspathConfigurationName(overlay), otherProject);
otherProject.getPlugins().withType(WarOverlayPlugin.class, otherWarOverlayPlugin -> {
Map<String, String> map = new HashMap<>();
map.put("path", otherProject.getPath());
map.put("configuration", otherWarOverlayPlugin.getClasspathConfigurationName(otherWar));
project.getDependencies().add(
getClasspathConfigurationName(overlay),
project.getDependencies().project(map)
);
});
}
}
@Override
public void apply(Project project) {
project.getPlugins().apply(WarPlugin.class);
WarAttachClassesConvention attachClassesConvention = new WarAttachClassesConvention();
project.getTasks().named(WarPlugin.WAR_TASK_NAME, War.class, war ->
war.getConvention().getPlugins().put("attachClasses", attachClassesConvention)
);
project.afterEvaluate(p -> {
if (attachClassesConvention.isAttachClasses()) {
TaskProvider<Jar> jar = project.getTasks().named(JavaPlugin.JAR_TASK_NAME, Jar.class, j ->
j.getArchiveClassifier().convention(attachClassesConvention.getClassesClassifier())
);
project.getArtifacts().add(Dependency.ARCHIVES_CONFIGURATION, jar);
}
});
}
@Override
public void apply(Project project) {
project.getPlugins().apply(JSassWebjarsPlugin.class);
project.getPlugins().apply(WarPlugin.class);
TaskProvider<SassCompile> sassCompileTaskProvider = project.getTasks().register("compileWebappSass", SassCompile.class, compileWebappSass -> {
compileWebappSass.setGroup(BasePlugin.BUILD_GROUP);
compileWebappSass.setDescription("Compile sass and scss files for the webapp");
WarPluginConvention warPluginConvention = project.getConvention().getPlugin(WarPluginConvention.class);
compileWebappSass.source(warPluginConvention.getWebAppDir());
compileWebappSass.getDestinationDir().set(new File(project.getBuildDir(), "jsass/webapp"));
});
project.getTasks().named(WarPlugin.WAR_TASK_NAME, War.class)
.configure(war -> war.from(sassCompileTaskProvider));
}
private void createExplodedWarTask() {
project
.getTasks()
.create(
EXPLODE_WAR_TASK_NAME,
ExplodeWarTask.class,
explodeWar -> {
explodeWar.setExplodedAppDirectory(explodedWarDir);
explodeWar.dependsOn(WarPlugin.WAR_TASK_NAME);
explodeWar.setGroup(APP_ENGINE_STANDARD_TASK_GROUP);
explodeWar.setDescription("Explode a war into a directory");
project.afterEvaluate(
project ->
explodeWar.setWarFile(
((War) project.getTasks().getByPath(WarPlugin.WAR_TASK_NAME))
.getArchivePath()));
});
project.getTasks().getByName(BasePlugin.ASSEMBLE_TASK_NAME).dependsOn(EXPLODE_WAR_TASK_NAME);
}
private void createSourceContextTask() {
project
.getTasks()
.create(
"_createSourceContext",
GenRepoInfoFileTask.class,
genRepoInfoFile -> {
genRepoInfoFile.setDescription("_internal");
project.afterEvaluate(
project -> {
genRepoInfoFile.setConfiguration(extension);
genRepoInfoFile.setGcloud(cloudSdkOperations.getGcloud());
});
});
configureArchiveTask(project.getTasks().withType(War.class).findByName("war"));
configureArchiveTask(project.getTasks().withType(Jar.class).findByName("jar"));
}
@Test
public void testDefaultConfiguration() throws IOException {
Project p = new TestProject(testProjectDir.getRoot()).applyAppYamlWarProjectBuilder();
AppEngineAppYamlExtension ext = p.getExtensions().getByType(AppEngineAppYamlExtension.class);
DeployExtension deployExt = ext.getDeploy();
StageAppYamlExtension stageExt = ext.getStage();
assertEquals(new File(p.getBuildDir(), "staged-app"), stageExt.getStagingDirectory());
assertEquals(
testProjectDir.getRoot().toPath().toRealPath().resolve("src/main/appengine"),
stageExt.getAppEngineDirectory().toPath());
assertEquals(
testProjectDir.getRoot().toPath().toRealPath().resolve("src/main/appengine"),
deployExt.getAppEngineDirectory().toPath());
assertEquals((((War) p.getProperties().get("war")).getArchivePath()), stageExt.getArtifact());
assertFalse(new File(testProjectDir.getRoot(), "src/main/docker").exists());
assertEquals("test-project", deployExt.getProjectId());
assertEquals("test-version", deployExt.getVersion());
}
private void configureOverlay(WarOverlay overlay, Project otherProject) {
project.evaluationDependsOn(otherProject.getPath());
War otherWar = (War) otherProject.getTasks().getByName(WAR_TASK_NAME);
configureOverlay(overlay, otherWar);
if (overlay.isEnableCompilation()) {
project.getDependencies().add(getClasspathConfigurationName(overlay), otherProject);
otherProject.getPlugins().withType(WarOverlayPlugin.class, otherWarOverlayPlugin -> {
Map<String, String> map = new HashMap<>();
map.put("path", otherProject.getPath());
map.put("configuration", otherWarOverlayPlugin.getClasspathConfigurationName(otherWar));
project.getDependencies().add(
getClasspathConfigurationName(overlay),
project.getDependencies().project(map)
);
});
}
}
@Override
public void apply(Project project) {
project.getPlugins().apply(WarPlugin.class);
WarAttachClassesConvention attachClassesConvention = new WarAttachClassesConvention();
project.getTasks().named(WarPlugin.WAR_TASK_NAME, War.class, war ->
war.getConvention().getPlugins().put("attachClasses", attachClassesConvention)
);
project.afterEvaluate(p -> {
if (attachClassesConvention.isAttachClasses()) {
TaskProvider<Jar> jar = project.getTasks().named(JavaPlugin.JAR_TASK_NAME, Jar.class, j ->
j.getArchiveClassifier().convention(attachClassesConvention.getClassesClassifier())
);
project.getArtifacts().add(Dependency.ARCHIVES_CONFIGURATION, jar);
}
});
}
@Override
public void apply(Project project) {
project.getPlugins().apply(JSassWebjarsPlugin.class);
project.getPlugins().apply(WarPlugin.class);
TaskProvider<SassCompile> sassCompileTaskProvider = project.getTasks().register("compileWebappSass", SassCompile.class, compileWebappSass -> {
compileWebappSass.setGroup(BasePlugin.BUILD_GROUP);
compileWebappSass.setDescription("Compile sass and scss files for the webapp");
WarPluginConvention warPluginConvention = project.getConvention().getPlugin(WarPluginConvention.class);
compileWebappSass.source(warPluginConvention.getWebAppDir());
compileWebappSass.getDestinationDir().set(new File(project.getBuildDir(), "jsass/webapp"));
});
project.getTasks().named(WarPlugin.WAR_TASK_NAME, War.class)
.configure(war -> war.from(sassCompileTaskProvider));
}
private void createCompileTask(final Project project) {
project.getTasks().create(GwtCompileTask.NAME, GwtCompileTask.class);
final PutnamiExtension extension = project.getExtensions().getByType(PutnamiExtension.class);
final War warTask = project.getTasks().withType(War.class).getByName("war");
warTask.dependsOn(GwtCompileTask.NAME);
project.getTasks().withType(GwtCompileTask.class, new Action<GwtCompileTask>() {
@Override
public void execute(final GwtCompileTask task) {
task.configure(project, extension);
warTask.from(extension.getCompile().getWar());
}
});
ConfigurationContainer configurationContainer = project.getConfigurations();
// Configuration gwtConfig = configurationContainer.getByName(PwtLibPlugin.CONF_GWT_SDM);
// FileCollection warClasspath = warTask.getClasspath().minus(gwtConfig);
// warTask.setClasspath(warClasspath);
}
private void configureAbstractJettyTask(final Project project, final JettyPluginConvention jettyConvention, AbstractJettyRunTask jettyTask) {
jettyTask.setDaemon(false);
jettyTask.setReload(RELOAD_AUTOMATIC);
jettyTask.setScanIntervalSeconds(0);
jettyTask.getConventionMapping().map("contextPath", new Callable<Object>() {
public Object call() throws Exception {
return ((War) project.getTasks().getByName(WarPlugin.WAR_TASK_NAME)).getBaseName();
}
});
jettyTask.getConventionMapping().map("httpPort", new Callable<Object>() {
public Object call() throws Exception {
return jettyConvention.getHttpPort();
}
});
jettyTask.getConventionMapping().map("stopPort", new Callable<Object>() {
public Object call() throws Exception {
return jettyConvention.getStopPort();
}
});
jettyTask.getConventionMapping().map("stopKey", new Callable<Object>() {
public Object call() throws Exception {
return jettyConvention.getStopKey();
}
});
}
private void configureAbstractJettyTask(final Project project, final JettyPluginConvention jettyConvention, AbstractJettyRunTask jettyTask) {
jettyTask.setDaemon(false);
jettyTask.setReload(RELOAD_AUTOMATIC);
jettyTask.setScanIntervalSeconds(0);
jettyTask.getConventionMapping().map("contextPath", new Callable<Object>() {
public Object call() throws Exception {
return ((War) project.getTasks().getByName(WarPlugin.WAR_TASK_NAME)).getBaseName();
}
});
jettyTask.getConventionMapping().map("httpPort", new Callable<Object>() {
public Object call() throws Exception {
return jettyConvention.getHttpPort();
}
});
jettyTask.getConventionMapping().map("stopPort", new Callable<Object>() {
public Object call() throws Exception {
return jettyConvention.getStopPort();
}
});
jettyTask.getConventionMapping().map("stopKey", new Callable<Object>() {
public Object call() throws Exception {
return jettyConvention.getStopKey();
}
});
}
public void apply(final Project project) {
project.getPlugins().apply(JavaPlugin.class);
final WarPluginConvention pluginConvention = new WarPluginConvention(project);
project.getConvention().getPlugins().put("war", pluginConvention);
project.getTasks().withType(War.class, new Action<War>() {
public void execute(War task) {
task.from(new Callable() {
public Object call() throws Exception {
return pluginConvention.getWebAppDir();
}
});
task.dependsOn(new Callable() {
public Object call() throws Exception {
return project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().getByName(
SourceSet.MAIN_SOURCE_SET_NAME).getRuntimeClasspath();
}
});
task.classpath(new Object[] {new Callable() {
public Object call() throws Exception {
FileCollection runtimeClasspath = project.getConvention().getPlugin(JavaPluginConvention.class)
.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME).getRuntimeClasspath();
Configuration providedRuntime = project.getConfigurations().getByName(
PROVIDED_RUNTIME_CONFIGURATION_NAME);
return runtimeClasspath.minus(providedRuntime);
}
}});
}
});
War war = project.getTasks().create(WAR_TASK_NAME, War.class);
war.setDescription("Generates a war archive with all the compiled classes, the web-app content and the libraries.");
war.setGroup(BasePlugin.BUILD_GROUP);
ArchivePublishArtifact warArtifact = new ArchivePublishArtifact(war);
project.getExtensions().getByType(DefaultArtifactPublicationSet.class).addCandidate(warArtifact);
configureConfigurations(project.getConfigurations());
configureComponent(project, warArtifact);
}
public void apply(final Project project) {
project.getPlugins().apply(JavaPlugin.class);
final WarPluginConvention pluginConvention = new WarPluginConvention(project);
project.getConvention().getPlugins().put("war", pluginConvention);
project.getTasks().withType(War.class, new Action<War>() {
public void execute(War task) {
task.from(new Callable() {
public Object call() throws Exception {
return pluginConvention.getWebAppDir();
}
});
task.dependsOn(new Callable() {
public Object call() throws Exception {
return project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().getByName(
SourceSet.MAIN_SOURCE_SET_NAME).getRuntimeClasspath();
}
});
task.classpath(new Object[] {new Callable() {
public Object call() throws Exception {
FileCollection runtimeClasspath = project.getConvention().getPlugin(JavaPluginConvention.class)
.getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME).getRuntimeClasspath();
Configuration providedRuntime = project.getConfigurations().getByName(
PROVIDED_RUNTIME_CONFIGURATION_NAME);
return runtimeClasspath.minus(providedRuntime);
}
}});
}
});
War war = project.getTasks().create(WAR_TASK_NAME, War.class);
war.setDescription("Generates a war archive with all the compiled classes, the web-app content and the libraries.");
war.setGroup(BasePlugin.BUILD_GROUP);
ArchivePublishArtifact warArtifact = new ArchivePublishArtifact(war);
project.getExtensions().getByType(DefaultArtifactPublicationSet.class).addCandidate(warArtifact);
configureConfigurations(project.getConfigurations());
configureComponent(project, warArtifact);
}
@Override
public void apply(Project project) {
this.project = project;
project.getPluginManager().apply(WarPlugin.class);
project.getTasks().withType(War.class, warTask -> {
NamedDomainObjectContainer<WarOverlay> warOverlays = project.container(WarOverlay.class, name -> new WarOverlay(name, warTask));
warTask.getExtensions().add("overlays", warOverlays);
Configuration warOverlayClasspath = project.getConfigurations().create(warTask.getName() + "OverlayClasspath");
warTask.getExtensions().add("overlayClasspath", warOverlayClasspath);
if (warTask.getName().equals(WarPlugin.WAR_TASK_NAME)) {
project.getConfigurations().getByName(COMPILE_CLASSPATH_CONFIGURATION_NAME).extendsFrom(warOverlayClasspath);
project.getConfigurations().getByName(TEST_IMPLEMENTATION_CONFIGURATION_NAME).extendsFrom(warOverlayClasspath);
}
project.afterEvaluate(p -> warOverlays.all(overlay -> {
if (overlay.isEnabled()) {
configureOverlay(overlay);
} else {
Collection<CopySpecInternal> children = (Collection<CopySpecInternal>) overlay.getWarTask().getRootSpec().getChildren();
children.remove(overlay.getWarCopySpec());
}
}));
});
}
private void configureOverlay(WarOverlay overlay, ExternalDependency dependency) {
War warTask = overlay.getWarTask();
dependency.setTransitive(false);
Configuration configuration = project.getConfigurations().create(overlay.getConfigurationName());
configuration.setDescription(String.format("Contents of the overlay '%s' for the task '%s'.", overlay.getName(), warTask.getName()));
configuration.getDependencies().add(dependency);
configureOverlay(overlay, () -> project.zipTree(configuration.getSingleFile()));
}
private void configureOverlay(WarOverlay overlay, Callable<FileTree> warTree) {
War warTask = overlay.getWarTask();
String capitalizedWarTaskName = StringGroovyMethods.capitalize((CharSequence) warTask.getName());
String capitalizedOverlayName = StringGroovyMethods.capitalize((CharSequence) overlay.getName());
File destinationDir = new File(project.getBuildDir(), String.format("overlays/%s/%s", warTask.getName(), overlay.getName()));
Action<CopySpec> extractOverlay = copySpec -> {
copySpec.into(destinationDir);
copySpec.from(warTree);
};
Sync extractOverlayTask = project.getTasks().create(String.format("extract%s%sOverlay", capitalizedOverlayName, capitalizedWarTaskName), Sync.class, extractOverlay);
overlay.getWarCopySpec().from(extractOverlayTask);
if (overlay.isEnableCompilation()) {
if (!destinationDir.exists() || isEmpty(destinationDir)) {
project.sync(extractOverlay);
}
project.getTasks().getByName(CLEAN_TASK_NAME).finalizedBy(extractOverlayTask);
ConfigurableFileCollection classes = project.files(new File(destinationDir, "WEB-INF/classes"))
.builtBy(extractOverlayTask);
project.getDependencies().add(getClasspathConfigurationName(overlay), classes);
FileTree libs = project.files(extractOverlayTask).builtBy(extractOverlayTask).getAsFileTree()
.matching(patternFilterable -> patternFilterable.include("WEB-INF/lib/**"));
project.getDependencies().add(getClasspathConfigurationName(overlay), libs);
}
}
public WarOverlay(String name, War warTask) {
this.name = name;
this.warTask = warTask;
this.warCopySpec = warTask.getRootSpec().addChild();
warCopySpec.setDuplicatesStrategy(DuplicatesStrategy.EXCLUDE);
exclude("META-INF/maven/**");
exclude("META-INF/MANIFEST.MF");
}
@Override
public void apply(Project project) {
project.getTasks().withType(War.class, war -> {
WarArchiveClassesConvention archiveClassesConvention = new WarArchiveClassesConvention();
war.getConvention().getPlugins().put("archiveClasses", archiveClassesConvention);
Jar warClassesJar = project.getTasks().create(war.getName() + "ClassesJar", Jar.class);
warClassesJar.getArchiveBaseName().convention(war.getArchiveBaseName());
warClassesJar.getArchiveAppendix().convention(war.getArchiveAppendix());
warClassesJar.getArchiveVersion().convention(war.getArchiveVersion());
warClassesJar.getArchiveClassifier().convention(war.getArchiveClassifier());
project.afterEvaluate(p -> {
warClassesJar.setEnabled(archiveClassesConvention.isArchiveClasses());
if (archiveClassesConvention.isArchiveClasses()) {
FileCollection warClasspath = war.getClasspath();
warClassesJar.from(warClasspath != null ? warClasspath.filter(File::isDirectory) : Collections.emptyList());
war.setClasspath(warClasspath == null ? null : warClasspath.filter(File::isFile).plus(project.files(warClassesJar)));
}
});
});
}
@Test
public void testArchiveClassesProperty() {
project.getPlugins().apply(WarPlugin.class);
project.getPlugins().apply(WarArchiveClassesPlugin.class);
War warTask = (War) project.getTasks().getByName(WarPlugin.WAR_TASK_NAME);
assertThat(warTask.hasProperty("archiveClasses")).isTrue();
assertThat(warTask.property("archiveClasses")).isInstanceOf(Boolean.class);
}
@Test
public void testProperties() {
project.getPlugins().apply(WarPlugin.class);
project.getPlugins().apply(WarAttachClassesPlugin.class);
War warTask = (War) project.getTasks().getByName(WarPlugin.WAR_TASK_NAME);
assertThat(warTask.hasProperty("attachClasses")).isTrue();
assertThat(warTask.property("attachClasses")).isInstanceOf(Boolean.class);
assertThat(warTask.hasProperty("classesClassifier")).isTrue();
assertThat(warTask.property("classesClassifier")).isInstanceOf(String.class);
}
@Override
public void apply(Project project) {
this.project = project;
project.getPluginManager().apply(WarPlugin.class);
project.getTasks().withType(War.class, warTask -> {
NamedDomainObjectContainer<WarOverlay> warOverlays = project.container(WarOverlay.class, name -> new WarOverlay(name, warTask));
warTask.getExtensions().add("overlays", warOverlays);
Configuration warOverlayClasspath = project.getConfigurations().create(warTask.getName() + "OverlayClasspath");
warTask.getExtensions().add("overlayClasspath", warOverlayClasspath);
if (warTask.getName().equals(WarPlugin.WAR_TASK_NAME)) {
project.getConfigurations().getByName(COMPILE_CLASSPATH_CONFIGURATION_NAME).extendsFrom(warOverlayClasspath);
project.getConfigurations().getByName(TEST_IMPLEMENTATION_CONFIGURATION_NAME).extendsFrom(warOverlayClasspath);
}
project.afterEvaluate(p -> warOverlays.all(overlay -> {
if (overlay.isEnabled()) {
configureOverlay(overlay);
} else {
Collection<CopySpecInternal> children = (Collection<CopySpecInternal>) overlay.getWarTask().getRootSpec().getChildren();
children.remove(overlay.getWarCopySpec());
}
}));
});
}
private void configureOverlay(WarOverlay overlay, ExternalDependency dependency) {
War warTask = overlay.getWarTask();
dependency.setTransitive(false);
Configuration configuration = project.getConfigurations().create(overlay.getConfigurationName());
configuration.setDescription(String.format("Contents of the overlay '%s' for the task '%s'.", overlay.getName(), warTask.getName()));
configuration.getDependencies().add(dependency);
configureOverlay(overlay, () -> project.zipTree(configuration.getSingleFile()));
}
private void configureOverlay(WarOverlay overlay, Callable<FileTree> warTree) {
War warTask = overlay.getWarTask();
String capitalizedWarTaskName = StringGroovyMethods.capitalize((CharSequence) warTask.getName());
String capitalizedOverlayName = StringGroovyMethods.capitalize((CharSequence) overlay.getName());
File destinationDir = new File(project.getBuildDir(), String.format("overlays/%s/%s", warTask.getName(), overlay.getName()));
Action<CopySpec> extractOverlay = copySpec -> {
copySpec.into(destinationDir);
copySpec.from(warTree);
};
Sync extractOverlayTask = project.getTasks().create(String.format("extract%s%sOverlay", capitalizedOverlayName, capitalizedWarTaskName), Sync.class, extractOverlay);
overlay.getWarCopySpec().from(extractOverlayTask);
if (overlay.isEnableCompilation()) {
if (!destinationDir.exists() || isEmpty(destinationDir)) {
project.sync(extractOverlay);
}
project.getTasks().getByName(CLEAN_TASK_NAME).finalizedBy(extractOverlayTask);
ConfigurableFileCollection classes = project.files(new File(destinationDir, "WEB-INF/classes"))
.builtBy(extractOverlayTask);
project.getDependencies().add(getClasspathConfigurationName(overlay), classes);
FileTree libs = project.files(extractOverlayTask).builtBy(extractOverlayTask).getAsFileTree()
.matching(patternFilterable -> patternFilterable.include("WEB-INF/lib/**"));
project.getDependencies().add(getClasspathConfigurationName(overlay), libs);
}
}
public WarOverlay(String name, War warTask) {
this.name = name;
this.warTask = warTask;
this.warCopySpec = warTask.getRootSpec().addChild();
warCopySpec.setDuplicatesStrategy(DuplicatesStrategy.EXCLUDE);
exclude("META-INF/maven/**");
exclude("META-INF/MANIFEST.MF");
}
@Override
public void apply(Project project) {
project.getTasks().withType(War.class, war -> {
WarArchiveClassesConvention archiveClassesConvention = new WarArchiveClassesConvention();
war.getConvention().getPlugins().put("archiveClasses", archiveClassesConvention);
Jar warClassesJar = project.getTasks().create(war.getName() + "ClassesJar", Jar.class);
warClassesJar.getArchiveBaseName().convention(war.getArchiveBaseName());
warClassesJar.getArchiveAppendix().convention(war.getArchiveAppendix());
warClassesJar.getArchiveVersion().convention(war.getArchiveVersion());
warClassesJar.getArchiveClassifier().convention(war.getArchiveClassifier());
project.afterEvaluate(p -> {
warClassesJar.setEnabled(archiveClassesConvention.isArchiveClasses());
if (archiveClassesConvention.isArchiveClasses()) {
FileCollection warClasspath = war.getClasspath();
warClassesJar.from(warClasspath != null ? warClasspath.filter(File::isDirectory) : Collections.emptyList());
war.setClasspath(warClasspath == null ? null : warClasspath.filter(File::isFile).plus(project.files(warClassesJar)));
}
});
});
}
@Test
public void testArchiveClassesProperty() {
project.getPlugins().apply(WarPlugin.class);
project.getPlugins().apply(WarArchiveClassesPlugin.class);
War warTask = (War) project.getTasks().getByName(WarPlugin.WAR_TASK_NAME);
assertThat(warTask.hasProperty("archiveClasses")).isTrue();
assertThat(warTask.property("archiveClasses")).isInstanceOf(Boolean.class);
}
@Test
public void testProperties() {
project.getPlugins().apply(WarPlugin.class);
project.getPlugins().apply(WarAttachClassesPlugin.class);
War warTask = (War) project.getTasks().getByName(WarPlugin.WAR_TASK_NAME);
assertThat(warTask.hasProperty("attachClasses")).isTrue();
assertThat(warTask.property("attachClasses")).isInstanceOf(Boolean.class);
assertThat(warTask.hasProperty("classesClassifier")).isTrue();
assertThat(warTask.property("classesClassifier")).isInstanceOf(String.class);
}