下面列出了怎么用org.gradle.api.tasks.bundling.AbstractArchiveTask的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void apply(Project project) {
project.afterEvaluate((p) -> {
for (var entry : project.getAllTasks(true).entrySet()) {
for (var task : entry.getValue()) {
if (task instanceof AbstractArchiveTask) {
var archiveTask = (AbstractArchiveTask) task;
archiveTask.setPreserveFileTimestamps(false);
archiveTask.setReproducibleFileOrder(true);
}
}
}
});
project.getTasks().create("reproduce", ReproduceTask.class, (task) -> {
task.setDockerfile("Dockerfile");
});
}
public NotationParser<Object, MavenArtifact> create() {
FileNotationParser fileNotationParser = new FileNotationParser(fileResolver);
ArchiveTaskNotationParser archiveTaskNotationParser = new ArchiveTaskNotationParser();
PublishArtifactNotationParser publishArtifactNotationParser = new PublishArtifactNotationParser();
NotationParser<Object, MavenArtifact> sourceNotationParser = NotationParserBuilder
.toType(MavenArtifact.class)
.fromType(AbstractArchiveTask.class, archiveTaskNotationParser)
.fromType(PublishArtifact.class, publishArtifactNotationParser)
.converter(fileNotationParser)
.toComposite();
MavenArtifactMapNotationParser mavenArtifactMapNotationParser = new MavenArtifactMapNotationParser(sourceNotationParser);
NotationParserBuilder<MavenArtifact> parserBuilder = NotationParserBuilder
.toType(MavenArtifact.class)
.fromType(AbstractArchiveTask.class, archiveTaskNotationParser)
.fromType(PublishArtifact.class, publishArtifactNotationParser)
.parser(mavenArtifactMapNotationParser)
.converter(fileNotationParser);
return parserBuilder.toComposite();
}
public NotationParser<Object, MavenArtifact> create() {
FileNotationParser fileNotationParser = new FileNotationParser(fileResolver);
ArchiveTaskNotationParser archiveTaskNotationParser = new ArchiveTaskNotationParser();
PublishArtifactNotationParser publishArtifactNotationParser = new PublishArtifactNotationParser();
NotationParser<Object, MavenArtifact> sourceNotationParser = NotationParserBuilder
.toType(MavenArtifact.class)
.fromType(AbstractArchiveTask.class, archiveTaskNotationParser)
.fromType(PublishArtifact.class, publishArtifactNotationParser)
.converter(fileNotationParser)
.toComposite();
MavenArtifactMapNotationParser mavenArtifactMapNotationParser = new MavenArtifactMapNotationParser(sourceNotationParser);
NotationParserBuilder<MavenArtifact> parserBuilder = NotationParserBuilder
.toType(MavenArtifact.class)
.fromType(AbstractArchiveTask.class, archiveTaskNotationParser)
.fromType(PublishArtifact.class, publishArtifactNotationParser)
.parser(mavenArtifactMapNotationParser)
.converter(fileNotationParser);
return parserBuilder.toComposite();
}
public void convert(AbstractArchiveTask archiveTask, NotationConvertResult<? super MavenArtifact> result) throws TypeConversionException {
DefaultMavenArtifact artifact = instantiator.newInstance(
DefaultMavenArtifact.class,
archiveTask.getArchivePath(), archiveTask.getExtension(), archiveTask.getClassifier());
artifact.builtBy(archiveTask);
result.converted(artifact);
}
@Override
protected IvyArtifact parseType(AbstractArchiveTask archiveTask) {
DefaultIvyArtifact ivyArtifact = createDefaultIvyArtifact(
archiveTask.getArchivePath(), archiveTask.getExtension(), archiveTask.getExtension(), archiveTask.getClassifier());
ivyArtifact.builtBy(archiveTask);
return ivyArtifact;
}
private void configureArchiveDefaults(final Project project, final BasePluginConvention pluginConvention) {
project.getTasks().withType(AbstractArchiveTask.class, new Action<AbstractArchiveTask>() {
public void execute(AbstractArchiveTask task) {
ConventionMapping taskConventionMapping = task.getConventionMapping();
Callable<File> destinationDir;
if (task instanceof Jar) {
destinationDir = new Callable<File>() {
public File call() throws Exception {
return pluginConvention.getLibsDir();
}
};
} else {
destinationDir = new Callable<File>() {
public File call() throws Exception {
return pluginConvention.getDistsDir();
}
};
}
taskConventionMapping.map("destinationDir", destinationDir);
taskConventionMapping.map("version", new Callable<String>() {
public String call() throws Exception {
return project.getVersion() == Project.DEFAULT_VERSION ? null : project.getVersion().toString();
}
});
taskConventionMapping.map("baseName", new Callable<String>() {
public String call() throws Exception {
return pluginConvention.getArchivesBaseName();
}
});
}
});
}
@Override
protected MavenArtifact parseType(AbstractArchiveTask archiveTask) {
DefaultMavenArtifact artifact = instantiator.newInstance(
DefaultMavenArtifact.class,
archiveTask.getArchivePath(), archiveTask.getExtension(), archiveTask.getClassifier());
artifact.builtBy(archiveTask);
return artifact;
}
@Override
protected IvyArtifact parseType(AbstractArchiveTask archiveTask) {
DefaultIvyArtifact ivyArtifact = createDefaultIvyArtifact(
archiveTask.getArchivePath(), archiveTask.getExtension(), archiveTask.getExtension(), archiveTask.getClassifier());
ivyArtifact.builtBy(archiveTask);
return ivyArtifact;
}
private void configureArchiveDefaults(final Project project, final BasePluginConvention pluginConvention) {
project.getTasks().withType(AbstractArchiveTask.class, new Action<AbstractArchiveTask>() {
public void execute(AbstractArchiveTask task) {
ConventionMapping taskConventionMapping = task.getConventionMapping();
Callable<File> destinationDir;
if (task instanceof Jar) {
destinationDir = new Callable<File>() {
public File call() throws Exception {
return pluginConvention.getLibsDir();
}
};
} else {
destinationDir = new Callable<File>() {
public File call() throws Exception {
return pluginConvention.getDistsDir();
}
};
}
taskConventionMapping.map("destinationDir", destinationDir);
taskConventionMapping.map("version", new Callable<String>() {
public String call() throws Exception {
return project.getVersion() == Project.DEFAULT_VERSION ? null : project.getVersion().toString();
}
});
taskConventionMapping.map("baseName", new Callable<String>() {
public String call() throws Exception {
return pluginConvention.getArchivesBaseName();
}
});
}
});
}
private void configureArchiveDefaults(final Project project, final BasePluginConvention pluginConvention) {
project.getTasks().withType(AbstractArchiveTask.class, new Action<AbstractArchiveTask>() {
public void execute(AbstractArchiveTask task) {
ConventionMapping taskConventionMapping = task.getConventionMapping();
Callable<File> destinationDir;
if (task instanceof Jar) {
destinationDir = new Callable<File>() {
public File call() throws Exception {
return pluginConvention.getLibsDir();
}
};
} else {
destinationDir = new Callable<File>() {
public File call() throws Exception {
return pluginConvention.getDistsDir();
}
};
}
taskConventionMapping.map("destinationDir", destinationDir);
taskConventionMapping.map("version", new Callable<String>() {
public String call() throws Exception {
return project.getVersion() == Project.DEFAULT_VERSION ? null : project.getVersion().toString();
}
});
taskConventionMapping.map("baseName", new Callable<String>() {
public String call() throws Exception {
return pluginConvention.getArchivesBaseName();
}
});
}
});
}
private void configureArchiveTask(AbstractArchiveTask archiveTask) {
if (archiveTask == null) {
return;
}
archiveTask.dependsOn("_createSourceContext");
archiveTask.from(extension.getOutputDirectory(), copySpec -> copySpec.into("WEB-INF/classes"));
}
public void convert(AbstractArchiveTask archiveTask, NotationConvertResult<? super MavenArtifact> result) throws TypeConversionException {
DefaultMavenArtifact artifact = instantiator.newInstance(
DefaultMavenArtifact.class,
archiveTask.getArchivePath(), archiveTask.getExtension(), archiveTask.getClassifier());
artifact.builtBy(archiveTask);
result.converted(artifact);
}
@Override
protected IvyArtifact parseType(AbstractArchiveTask archiveTask) {
DefaultIvyArtifact ivyArtifact = createDefaultIvyArtifact(
archiveTask.getArchivePath(), archiveTask.getExtension(), archiveTask.getExtension(), archiveTask.getClassifier());
ivyArtifact.builtBy(archiveTask);
return ivyArtifact;
}
private void configureArchiveDefaults(final Project project, final BasePluginConvention pluginConvention) {
project.getTasks().withType(AbstractArchiveTask.class, new Action<AbstractArchiveTask>() {
public void execute(AbstractArchiveTask task) {
ConventionMapping taskConventionMapping = task.getConventionMapping();
Callable<File> destinationDir;
if (task instanceof Jar) {
destinationDir = new Callable<File>() {
public File call() throws Exception {
return pluginConvention.getLibsDir();
}
};
} else {
destinationDir = new Callable<File>() {
public File call() throws Exception {
return pluginConvention.getDistsDir();
}
};
}
taskConventionMapping.map("destinationDir", destinationDir);
taskConventionMapping.map("version", new Callable<String>() {
public String call() throws Exception {
return project.getVersion() == Project.DEFAULT_VERSION ? null : project.getVersion().toString();
}
});
taskConventionMapping.map("baseName", new Callable<String>() {
public String call() throws Exception {
return pluginConvention.getArchivesBaseName();
}
});
}
});
}
@Override
protected MavenArtifact parseType(AbstractArchiveTask archiveTask) {
DefaultMavenArtifact artifact = instantiator.newInstance(
DefaultMavenArtifact.class,
archiveTask.getArchivePath(), archiveTask.getExtension(), archiveTask.getClassifier());
artifact.builtBy(archiveTask);
return artifact;
}
@Override
protected IvyArtifact parseType(AbstractArchiveTask archiveTask) {
DefaultIvyArtifact ivyArtifact = createDefaultIvyArtifact(
archiveTask.getArchivePath(), archiveTask.getExtension(), archiveTask.getExtension(), archiveTask.getClassifier());
ivyArtifact.builtBy(archiveTask);
return ivyArtifact;
}
private void configureArchiveDefaults(final Project project, final BasePluginConvention pluginConvention) {
project.getTasks().withType(AbstractArchiveTask.class, new Action<AbstractArchiveTask>() {
public void execute(AbstractArchiveTask task) {
ConventionMapping taskConventionMapping = task.getConventionMapping();
Callable<File> destinationDir;
if (task instanceof Jar) {
destinationDir = new Callable<File>() {
public File call() throws Exception {
return pluginConvention.getLibsDir();
}
};
} else {
destinationDir = new Callable<File>() {
public File call() throws Exception {
return pluginConvention.getDistsDir();
}
};
}
taskConventionMapping.map("destinationDir", destinationDir);
taskConventionMapping.map("version", new Callable<String>() {
public String call() throws Exception {
return project.getVersion() == Project.DEFAULT_VERSION ? null : project.getVersion().toString();
}
});
taskConventionMapping.map("baseName", new Callable<String>() {
public String call() throws Exception {
return pluginConvention.getArchivesBaseName();
}
});
}
});
}
private ArchiveTaskNotationParser() {
super(AbstractArchiveTask.class);
}
@Override
protected PublishArtifact parseType(AbstractArchiveTask notation) {
return instantiator.newInstance(ArchivePublishArtifact.class, notation);
}
private ArchiveTaskNotationParser() {
super(AbstractArchiveTask.class);
}
public ArchivePublishArtifact(AbstractArchiveTask archiveTask) {
super(archiveTask);
this.archiveTask = archiveTask;
}
public AbstractArchiveTask getArchiveTask() {
return archiveTask;
}
private ArchiveTaskNotationParser() {
super(AbstractArchiveTask.class);
}
private ArchiveTaskNotationParser() {
super(AbstractArchiveTask.class);
}
@Override
protected PublishArtifact parseType(AbstractArchiveTask notation) {
return instantiator.newInstance(ArchivePublishArtifact.class, notation);
}
private ArchiveTaskNotationParser() {
super(AbstractArchiveTask.class);
}
public ArchivePublishArtifact(AbstractArchiveTask archiveTask) {
super(archiveTask);
this.archiveTask = archiveTask;
}
public AbstractArchiveTask getArchiveTask() {
return archiveTask;
}
private void configureOverlay(WarOverlay overlay) {
if (overlay.isDeferProvidedConfiguration()) {
//Delay this to trick IntelliJ
//noinspection Convert2Lambda
overlay.getWarTask().doFirst(new Action<Task>() {
@Override
public void execute(Task w) {
overlay.getWarCopySpec().exclude(element -> overlay.isProvided());
}
});
} else {
overlay.getWarCopySpec().exclude(element -> overlay.isProvided());
}
Object source = overlay.getSource();
if (source instanceof AbstractArchiveTask) {
configureOverlay(overlay, (AbstractArchiveTask) source);
} else if (source instanceof Project && overlay.getConfigureClosure() == null) {
configureOverlay(overlay, (Project) source);
} else if (source instanceof File) {
configureOverlay(overlay, (File) source);
} else {
Closure configClosure = overlay.getConfigureClosure();
Dependency dependency;
if (configClosure == null) {
dependency = project.getDependencies().create(source);
} else {
dependency = project.getDependencies().create(source, configClosure);
}
if (dependency instanceof ProjectDependency) {
configureOverlay(overlay, ((ProjectDependency) dependency).getDependencyProject());
} else if (dependency instanceof ExternalDependency) {
configureOverlay(overlay, (ExternalDependency) dependency);
} else {
throw new GradleException("Unsupported dependency type: " + dependency.getClass().getName());
}
}
}
private void configureOverlay(WarOverlay overlay, AbstractArchiveTask from) {
overlay.getWarCopySpec().with(from.getRootSpec());
}