added war filtering support

This commit is contained in:
Brian Long 2023-01-30 10:29:15 -05:00
parent a6d993348c
commit 21c03c0f8a
3 changed files with 24 additions and 6 deletions

View File

@ -110,7 +110,6 @@ You can also use the plugin configuration to define standard `resources`. You w
</plugin> </plugin>
``` ```
> Currently supported `resource` configuration elements: `directory` and `targetPath`
> `maven.war.skip` does not work in the default `maven-war-plugin` version. > `maven.war.skip` does not work in the default `maven-war-plugin` version.
### Wildfly Enterprise Application Deployment ### Wildfly Enterprise Application Deployment

View File

@ -52,6 +52,11 @@
<version>${maven.version}</version> <version>${maven.version}</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-filtering</artifactId>
<version>3.3.0</version>
</dependency>
<dependency> <dependency>
<groupId>org.apache.maven.plugin-tools</groupId> <groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId> <artifactId>maven-plugin-annotations</artifactId>

View File

@ -18,6 +18,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.List; import java.util.List;
import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.ParserConfigurationException;
@ -28,7 +29,11 @@ import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.shared.filtering.MavenFilteringException;
import org.apache.maven.shared.filtering.MavenResourcesExecution;
import org.apache.maven.shared.filtering.MavenResourcesFiltering;
import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.util.FileUtils; import org.codehaus.plexus.util.FileUtils;
import org.eclipse.aether.graph.Dependency; import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.graph.DependencyFilter; import org.eclipse.aether.graph.DependencyFilter;
@ -52,6 +57,9 @@ public class WarGoal extends AbstractDeploymentGoal {
@Parameter @Parameter
protected List<Resource> resources; protected List<Resource> resources;
@Requirement
private MavenResourcesFiltering filterer;
private DeploymentXmlBuilder deploymentXmlBuilder; private DeploymentXmlBuilder deploymentXmlBuilder;
private File webinfDirectory; private File webinfDirectory;
private File libDirectory; private File libDirectory;
@ -124,15 +132,21 @@ public class WarGoal extends AbstractDeploymentGoal {
} }
if (this.resources != null) { if (this.resources != null) {
for (Resource resource : this.resources) { MavenResourcesExecution execution = new MavenResourcesExecution(
File sourceDirectory = new File(resource.getDirectory()); this.resources,
File outputDirectory = resource.getTargetPath() == null ? this.outputDirectory : new File(this.outputDirectory, resource.getTargetPath()); this.outputDirectory,
FileUtils.copyDirectoryStructure(sourceDirectory, outputDirectory); this.project,
} "utf-8",
Collections.emptyList(),
this.filterer.getDefaultNonFilteredFileExtensions(),
this.session);
this.filterer.filterResources(execution);
} }
if (this.webappDirectory.exists()) if (this.webappDirectory.exists())
FileUtils.copyDirectoryStructure(this.webappDirectory, this.outputDirectory); FileUtils.copyDirectoryStructure(this.webappDirectory, this.outputDirectory);
} catch (MavenFilteringException mfe) {
throw new MojoExecutionException("A filtering issue occurred", mfe);
} catch (IOException ie) { } catch (IOException ie) {
throw new MojoExecutionException("An I/O issue occurred", ie); throw new MojoExecutionException("An I/O issue occurred", ie);
} }