added module versioning support

This commit is contained in:
2023-02-19 10:30:32 -05:00
parent 2f090ec16a
commit cadc76ada6
9 changed files with 33 additions and 12 deletions

View File

@@ -42,10 +42,16 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.version>3.6.3</maven.version>
<maven.version>3.9.0</maven.version>
</properties>
<dependencies>
<!-- needs to be explicitly included, due to v3.9.0 packaging bug -->
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-utils</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
@@ -66,6 +72,7 @@
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>${maven.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-testing</groupId>

View File

@@ -18,6 +18,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import org.apache.commons.lang3.StringUtils;
import org.apache.maven.model.Model;
import org.apache.maven.model.building.DefaultModelBuildingRequest;
import org.apache.maven.model.building.ModelBuildingException;
@@ -53,6 +54,7 @@ public class ModuleArtifactExtractor {
if (artifact.getProperty("id", null) != null) {
Module module = new Module();
module.id = artifact.getProperty("id", null);
module.version = artifact.getProperty("version", null);
module.exportMetaInf = Boolean.parseBoolean(artifact.getProperty("exportMetaInf", Boolean.FALSE.toString()));
module.exportServices = Boolean.parseBoolean(artifact.getProperty("exportServices", Boolean.FALSE.toString()));
module.exportAnnotations = Boolean.parseBoolean(artifact.getProperty("exportAnnotations", Boolean.FALSE.toString()));
@@ -81,8 +83,11 @@ public class ModuleArtifactExtractor {
this.getLog().debug("No 'wildfly.module.id' property; not a Wildfly module project; adding as module resource: " + artifact);
return null;
} else {
String moduleVersion = StringUtils.trimToNull(modelProps.getProperty("wildfly.module.version"));
Module module = new Module();
module.id = moduleId;
module.version = moduleVersion;
module.exportMetaInf = Boolean.parseBoolean(modelProps.getProperty("wildfly.module.meta"));
module.exportServices = Boolean.parseBoolean(modelProps.getProperty("wildfly.module.services"));
module.exportAnnotations = Boolean.parseBoolean(modelProps.getProperty("wildfly.module.annotations"));
@@ -90,6 +95,7 @@ public class ModuleArtifactExtractor {
Map<String, String> props = new HashMap<>();
props.put("id", module.id);
props.put("version", module.version);
props.put("exportMetaInf", String.valueOf(module.exportMetaInf));
props.put("exportServices", String.valueOf(module.exportServices));
props.put("exportAnnotations", String.valueOf(module.exportAnnotations));

View File

@@ -34,8 +34,8 @@ import org.apache.maven.plugins.annotations.Parameter;
*/
public abstract class AbstractDeploymentGoal extends AbstractGoal {
@Parameter( property = "wildfly.deployment.version", required = true, defaultValue = "1.3" )
protected String deploymentVersion;
@Parameter( required = true, defaultValue = "1.3" )
protected String deploymentSchemaVersion;
@Parameter( property = "wildfly.deployment.outputDirectory", required = true, defaultValue = "${project.build.directory}/${project.build.finalName}" )
protected File outputDirectory;

View File

@@ -26,7 +26,10 @@ public abstract class AbstractModuleGoal extends AbstractGoal {
@Parameter( property = "wildfly.module.id", required = true )
protected String moduleId;
@Parameter( property = "wildfly.module.version", required = true, defaultValue = "1.9" )
@Parameter( required = true, defaultValue = "1.9" )
protected String moduleSchemaVersion;
@Parameter( property = "wildfly.module.version", required = true, defaultValue = "main" )
protected String moduleVersion;
@Parameter( property = "wildfly.module.outputDirectory", required = true, defaultValue = "${project.build.directory}/wildfly-module" )
@@ -41,12 +44,12 @@ public abstract class AbstractModuleGoal extends AbstractGoal {
throw new IllegalStateException("The formulated directory contains a file: " + directory);
}
File mainDirectory = new File(directory, "main");
if (mainDirectory.exists() && !mainDirectory.isDirectory())
File versionDirectory = new File(directory, this.moduleVersion);
if (versionDirectory.exists() && !versionDirectory.isDirectory())
throw new IllegalStateException("The formulated directory contains a file: " + directory);
mainDirectory.mkdirs();
return mainDirectory;
versionDirectory.mkdirs();
return versionDirectory;
}
}

View File

@@ -49,7 +49,7 @@ public class EarGoal extends AbstractDeploymentGoal {
@Override
protected void executePre() throws MojoExecutionException {
try {
this.deploymentXmlBuilder = new DeploymentXmlBuilder(this.deploymentVersion);
this.deploymentXmlBuilder = new DeploymentXmlBuilder(this.deploymentSchemaVersion);
} catch (ParserConfigurationException pce) {
throw new MojoExecutionException("This should never happen", pce);
}

View File

@@ -47,7 +47,7 @@ public class GenerateModuleXmlGoal extends AbstractModuleGoal {
@Override
protected void executePre() throws MojoExecutionException {
try {
this.moduleXmlBuilder = new ModuleXmlBuilder(this.moduleId, this.moduleVersion);
this.moduleXmlBuilder = new ModuleXmlBuilder(this.moduleId, this.moduleSchemaVersion);
} catch (ParserConfigurationException pce) {
throw new MojoExecutionException("This should never happen", pce);
}

View File

@@ -67,7 +67,7 @@ public class WarGoal extends AbstractDeploymentGoal {
@Override
protected void executePre() throws MojoExecutionException {
try {
this.deploymentXmlBuilder = new DeploymentXmlBuilder(this.deploymentVersion);
this.deploymentXmlBuilder = new DeploymentXmlBuilder(this.deploymentSchemaVersion);
} catch (ParserConfigurationException pce) {
throw new MojoExecutionException("This should never happen", pce);
}

View File

@@ -17,6 +17,7 @@ package com.inteligr8.wildfly.maven.model;
public class Module {
public String id;
public String version;
public boolean export;
public boolean exportMetaInf;
public boolean exportServices;

View File

@@ -54,8 +54,12 @@ public abstract class AbstractXmlBuilder {
public abstract String getXmlFilename();
public void addDependency(Module module, boolean isDeployment) {
String name = module.id;
if (module.version != null)
name += ":" + module.version;
Element moduleElement = this.xmldoc.createElementNS(this.ns, "module");
moduleElement.setAttribute("name", module.id);
moduleElement.setAttribute("name", name);
if (module.export)
moduleElement.setAttribute("export", Boolean.TRUE.toString());
if (isDeployment && module.exportMetaInf)