You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2013/09/22 10:21:56 UTC
svn commit: r1525331 - in
/tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven:
Mvn.java PreloadableTestWar.java PreloadableWar.java
Author: rmannibucau
Date: Sun Sep 22 08:21:56 2013
New Revision: 1525331
URL: http://svn.apache.org/r1525331
Log:
TOMEE-1041 adding Mvn.Builder to create archives
Modified:
tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/Mvn.java
tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableTestWar.java
tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableWar.java
Modified: tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/Mvn.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/Mvn.java?rev=1525331&r1=1525330&r2=1525331&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/Mvn.java (original)
+++ tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/Mvn.java Sun Sep 22 08:21:56 2013
@@ -38,88 +38,148 @@ import java.util.HashMap;
import java.util.Map;
public final class Mvn {
- /**
- * Client war.
- *
- * @return create a war with src/main/resources, src/main/webapp and all compile and runtime dependencies
- */
- public static Archive<?> war() {
- return war("test.war", null);
- }
+ public static class Builder {
+ private File basedir = null;
+ private File resources = null;
+ private File webapp = null;
+ private File classes = null;
+ private String basePackage = null;
+ private String name = "test.war";
+ private Map<File, String> additionalResources = new HashMap<File, String>();
+ private ScopeType[] scopes = { ScopeType.COMPILE, ScopeType.RUNTIME };
- /**
- * Server war without tests clases.
- *
- * @return create a war with src/main/resources, src/main/webapp and all compile, runtime and test dependencies
- */
- public static Archive<?> testWar() {
- return war("test.war", null, ScopeType.COMPILE, ScopeType.RUNTIME, ScopeType.TEST);
- }
+ public Builder scopes(final ScopeType... scopes) {
+ this.scopes = scopes;
+ return this;
+ }
- public static Archive<?> war(final String name, final String basePackage, final ScopeType... scopes) {
- final File basedir = basedir();
+ public Builder basedir(final File path) {
+ this.basedir = path;
+ return this;
+ }
- final WebArchive webArchive = ShrinkWrap.create(WebArchive.class, name);
+ public Builder resources(final File path) {
+ this.resources = path;
+ return this;
+ }
- if (basePackage == null) {
- final File classes = new File(basedir, "target/classes/");
- add(webArchive, classes, "/WEB-INF/classes/");
- } else {
- webArchive.addPackages(true, basePackage);
+ public Builder webapp(final File path) {
+ this.webapp = path;
+ return this;
}
- final File webapp = new File(basedir, "src/main/webapp");
- add(webArchive, webapp, "/");
- if (basePackage != null) {
- final File resources = new File(basedir, "src/main/resources");
- add(webArchive, resources, "/WEB-INF/classes/");
+ public Builder classes(final File path) {
+ this.classes = path;
+ return this;
}
- final ScopeType[] types;
- if (scopes == null || scopes.length == 0) {
- types = new ScopeType[]{ ScopeType.COMPILE, ScopeType.RUNTIME };
- } else {
- types = scopes;
+ public Builder applicationPackage(final String base) {
+ this.basePackage = base;
+ return this;
}
- try {
- final File[] deps = Maven.resolver().offline().loadPomFromFile(new File(basedir, "pom.xml"))
- .importDependencies(types).resolve().withTransitivity().asFile();
- if (deps.length > 0) {
- webArchive.addAsLibraries(deps);
- }
- } catch (final Exception e) {
- // no-op
+
+ public Builder name(final String name) {
+ this.name = name;
+ return this;
}
- return webArchive;
- }
+ public Builder additionalResource(final File folder, final String root) {
+ additionalResources.put(folder, root);
+ return this;
+ }
+
+ public Archive<?> build() {
+ initDefaults();
+
+ final WebArchive webArchive = ShrinkWrap.create(WebArchive.class, name);
+
+ if (basePackage != null) {
+ webArchive.addPackages(true, basePackage);
+ }
+ add(webArchive, classes, "/WEB-INF/classes/")
+ .add(webArchive, resources, "/WEB-INF/classes/")
+ .add(webArchive, webapp, "/");
+ for (final Map.Entry<File, String> additionalResource : additionalResources.entrySet()) {
+ add(webArchive, additionalResource.getKey(), additionalResource.getValue());
+ }
+
+ try {
+ final File[] deps = Maven.resolver().offline().loadPomFromFile(new File(basedir, "pom.xml"))
+ .importDependencies(scopes).resolve().withTransitivity().asFile();
+ if (deps.length > 0) {
+ webArchive.addAsLibraries(deps);
+ }
+ } catch (final Exception e) {
+ // no-op: no deps
+ }
- private static void add(final WebArchive webArchive, final File classes, final String root) {
- if (!classes.exists()) {
- return;
+ return webArchive;
}
- final KnownResourcesFilter filter = new KnownResourcesFilter(classes, root);
- filter.update(
- webArchive.merge(
- ShrinkWrap.create(GenericArchive.class).as(ExplodedImporter.class)
- .importDirectory(classes).as(GenericArchive.class), root, filter));
- }
+ private File basedir() {
+ if (basedir != null) {
+ return basedir;
+ }
- private static File basedir() {
- {
- final File file = new File("pom.xml");
- if (file.exists()) {
- return new File(".");
+ {
+ final File file = new File("pom.xml");
+ if (file.exists()) {
+ return new File(".");
+ }
+ }
+ {
+ final File file = new File("../pom.xml");
+ if (file.exists()) {
+ return new File("..");
+ }
}
+ throw new IllegalStateException("basedir not found");
}
- {
- final File file = new File("../pom.xml");
- if (file.exists()) {
- return new File("..");
+
+ private void initDefaults() {
+ final File basedir = basedir();
+ if (classes == null && basePackage == null) {
+ classes = new File(basedir, "target/classes");
+ }
+ if (resources == null && basePackage != null) {
+ resources = new File(basedir, "src/main/resources");
+ }
+ if (webapp == null) {
+ webapp = new File(basedir, "src/main/webapp");
}
}
- throw new IllegalStateException("basedir not found");
+
+ private Builder add(final WebArchive webArchive, final File dir, final String root) {
+ if (dir == null || !dir.exists()) {
+ return this;
+ }
+
+ final KnownResourcesFilter filter = new KnownResourcesFilter(dir, root);
+ filter.update(
+ webArchive.merge(
+ ShrinkWrap.create(GenericArchive.class).as(ExplodedImporter.class)
+ .importDirectory(dir).as(GenericArchive.class), root, filter));
+
+ return this;
+ }
+ }
+
+ /**
+ * Client war.
+ *
+ * @return create a war with src/main/resources, src/main/webapp and all compile and runtime dependencies
+ */
+ public static Archive<?> war() {
+ return new Builder().build();
+ }
+
+ /**
+ * Server war without tests clases.
+ *
+ * @return create a war with src/main/resources, src/main/webapp and all compile, runtime and test dependencies
+ */
+ public static Archive<?> testWar() {
+ return new Builder().scopes(ScopeType.COMPILE, ScopeType.RUNTIME, ScopeType.TEST).build();
}
private Mvn() {
Modified: tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableTestWar.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableTestWar.java?rev=1525331&r1=1525330&r2=1525331&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableTestWar.java (original)
+++ tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableTestWar.java Sun Sep 22 08:21:56 2013
@@ -37,7 +37,7 @@ public class PreloadableTestWar {
es.shutdown();
}
- public Archive<?> war() {
+ public static Archive<?> war() {
try {
return war.get();
} catch (final Exception e) {
Modified: tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableWar.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableWar.java?rev=1525331&r1=1525330&r2=1525331&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableWar.java (original)
+++ tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableWar.java Sun Sep 22 08:21:56 2013
@@ -37,7 +37,7 @@ public class PreloadableWar {
es.shutdown();
}
- public Archive<?> war() {
+ public static Archive<?> war() {
try {
return war.get();
} catch (final Exception e) {