diff --git a/archetypes/alfresco-allinone-archetype/src/main/resources/archetype-resources/run.bat b/archetypes/alfresco-allinone-archetype/src/main/resources/archetype-resources/run.bat
index 582c521d..0d40a2fc 100644
--- a/archetypes/alfresco-allinone-archetype/src/main/resources/archetype-resources/run.bat
+++ b/archetypes/alfresco-allinone-archetype/src/main/resources/archetype-resources/run.bat
@@ -3,6 +3,14 @@
SET COMPOSE_FILE_PATH=%CD%\target\classes\docker\docker-compose.yml
+IF [%M2_HOME%]==[] (
+ SET MVN_EXEC=mvn
+)
+
+IF NOT [%M2_HOME%]==[] (
+ SET MVN_EXEC=%M2_HOME%\bin\mvn
+)
+
IF [%1]==[] (
echo "Usage: %0 {build_start|start|stop|purge|tail|reload_share|reload_acs|build_test|test}"
GOTO END
@@ -50,6 +58,7 @@ IF %1==build_test (
CALL :build
CALL :start
CALL :test
+ CALL :tail_all
CALL :down
GOTO END
)
@@ -79,25 +88,28 @@ EXIT /B 0
:build
docker rmi alfresco-content-services-${rootArtifactId}:development
docker rmi alfresco-share-${rootArtifactId}:development
- call mvn clean install -DskipTests
+ call %MVN_EXEC% clean install -DskipTests
EXIT /B 0
:build_share
docker-compose -f "%COMPOSE_FILE_PATH%" kill ${rootArtifactId}-share
docker-compose -f "%COMPOSE_FILE_PATH%" rm -f ${rootArtifactId}-share
docker rmi alfresco-share-${rootArtifactId}:development
- call mvn clean install -DskipTests -pl ${rootArtifactId}-share-jar
+ call %MVN_EXEC% clean install -DskipTests -pl ${rootArtifactId}-share-jar
EXIT /B 0
:build_acs
docker-compose -f "%COMPOSE_FILE_PATH%" kill ${rootArtifactId}-acs
docker-compose -f "%COMPOSE_FILE_PATH%" rm -f ${rootArtifactId}-acs
docker rmi alfresco-content-services-${rootArtifactId}:development
- call mvn clean install -DskipTests -pl ${rootArtifactId}-platform-jar
+ call %MVN_EXEC% clean install -DskipTests -pl ${rootArtifactId}-platform-jar
EXIT /B 0
:tail
docker-compose -f "%COMPOSE_FILE_PATH%" logs -f
EXIT /B 0
+:tail_all
+ docker-compose -f "%COMPOSE_FILE_PATH%" logs --tail="all"
+EXIT /B 0
:test
- call mvn verify -pl integration-tests
+ call %MVN_EXEC% verify -pl integration-tests
EXIT /B 0
:purge
docker volume rm ${rootArtifactId}-acs-volume
diff --git a/archetypes/alfresco-allinone-archetype/src/main/resources/archetype-resources/run.sh b/archetypes/alfresco-allinone-archetype/src/main/resources/archetype-resources/run.sh
index 7659621f..86a1ab0d 100755
--- a/archetypes/alfresco-allinone-archetype/src/main/resources/archetype-resources/run.sh
+++ b/archetypes/alfresco-allinone-archetype/src/main/resources/archetype-resources/run.sh
@@ -3,6 +3,12 @@
export COMPOSE_FILE_PATH=${symbol_dollar}{PWD}/target/classes/docker/docker-compose.yml
+if [ -z "${symbol_dollar}{M2_HOME}" ]; then
+ export MVN_EXEC="mvn"
+else
+ export MVN_EXEC="${symbol_dollar}{M2_HOME}/bin/mvn"
+fi
+
start() {
docker volume create ${rootArtifactId}-acs-volume
docker volume create ${rootArtifactId}-db-volume
@@ -31,29 +37,33 @@ purge() {
build() {
docker rmi alfresco-content-services-${rootArtifactId}:development
docker rmi alfresco-share-${rootArtifactId}:development
- mvn clean install -DskipTests=true
+ ${symbol_dollar}MVN_EXEC clean install -DskipTests=true
}
build_share() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH kill ${rootArtifactId}-share
yes | docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH rm -f ${rootArtifactId}-share
docker rmi alfresco-share-${rootArtifactId}:development
- mvn clean install -DskipTests=true -pl ${rootArtifactId}-share-jar
+ ${symbol_dollar}MVN_EXEC clean install -DskipTests=true -pl ${rootArtifactId}-share-jar
}
build_acs() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH kill ${rootArtifactId}-acs
yes | docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH rm -f ${rootArtifactId}-acs
docker rmi alfresco-content-services-${rootArtifactId}:development
- mvn clean install -DskipTests=true -pl ${rootArtifactId}-platform-jar
+ ${symbol_dollar}MVN_EXEC clean install -DskipTests=true -pl ${rootArtifactId}-platform-jar
}
tail() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH logs -f
}
+tail_all() {
+ docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH logs --tail="all"
+}
+
test() {
- mvn verify -pl integration-tests
+ ${symbol_dollar}MVN_EXEC verify -pl integration-tests
}
case "${symbol_dollar}1" in
@@ -92,6 +102,7 @@ case "${symbol_dollar}1" in
build
start
test
+ tail_all
down
;;
test)
diff --git a/archetypes/alfresco-platform-jar-archetype/src/main/resources/archetype-resources/run.bat b/archetypes/alfresco-platform-jar-archetype/src/main/resources/archetype-resources/run.bat
index 0c1ee408..4e07e284 100644
--- a/archetypes/alfresco-platform-jar-archetype/src/main/resources/archetype-resources/run.bat
+++ b/archetypes/alfresco-platform-jar-archetype/src/main/resources/archetype-resources/run.bat
@@ -3,6 +3,14 @@
SET COMPOSE_FILE_PATH=%CD%\target\classes\docker\docker-compose.yml
+IF [%M2_HOME%]==[] (
+ SET MVN_EXEC=mvn
+)
+
+IF NOT [%M2_HOME%]==[] (
+ SET MVN_EXEC=%M2_HOME%\bin\mvn
+)
+
IF [%1]==[] (
echo "Usage: %0 {build_start|start|stop|purge|tail|build_test|test}"
GOTO END
@@ -38,6 +46,7 @@ IF %1==build_test (
CALL :build
CALL :start
CALL :test
+ CALL :tail_all
CALL :down
GOTO END
)
@@ -60,13 +69,16 @@ EXIT /B 0
EXIT /B 0
:build
docker rmi alfresco-content-services-${rootArtifactId}:development
- call mvn clean install -DskipTests
+ call %MVN_EXEC% clean install -DskipTests
EXIT /B 0
:tail
docker-compose -f "%COMPOSE_FILE_PATH%" logs -f
EXIT /B 0
+:tail_all
+ docker-compose -f "%COMPOSE_FILE_PATH%" logs --tail="all"
+EXIT /B 0
:test
- call mvn verify
+ call %MVN_EXEC% verify
EXIT /B 0
:purge
docker volume rm ${rootArtifactId}-acs-volume
diff --git a/archetypes/alfresco-platform-jar-archetype/src/main/resources/archetype-resources/run.sh b/archetypes/alfresco-platform-jar-archetype/src/main/resources/archetype-resources/run.sh
index 3789d951..7192937a 100755
--- a/archetypes/alfresco-platform-jar-archetype/src/main/resources/archetype-resources/run.sh
+++ b/archetypes/alfresco-platform-jar-archetype/src/main/resources/archetype-resources/run.sh
@@ -3,6 +3,12 @@
export COMPOSE_FILE_PATH=${symbol_dollar}{PWD}/target/classes/docker/docker-compose.yml
+if [ -z "${symbol_dollar}{M2_HOME}" ]; then
+ export MVN_EXEC="mvn"
+else
+ export MVN_EXEC="${symbol_dollar}{M2_HOME}/bin/mvn"
+fi
+
start() {
docker volume create ${rootArtifactId}-acs-volume
docker volume create ${rootArtifactId}-db-volume
@@ -22,15 +28,19 @@ purge() {
build() {
docker rmi alfresco-content-services-${rootArtifactId}:development
- mvn clean install -DskipTests=true
+ ${symbol_dollar}MVN_EXEC clean install -DskipTests=true
}
tail() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH logs -f
}
+tail_all() {
+ docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH logs --tail="all"
+}
+
test() {
- mvn verify
+ ${symbol_dollar}MVN_EXEC verify
}
case "${symbol_dollar}1" in
@@ -59,6 +69,7 @@ case "${symbol_dollar}1" in
build
start
test
+ tail_all
down
;;
test)
diff --git a/archetypes/alfresco-share-jar-archetype/src/main/resources/archetype-resources/run.bat b/archetypes/alfresco-share-jar-archetype/src/main/resources/archetype-resources/run.bat
index 43a3da73..b7d79d74 100644
--- a/archetypes/alfresco-share-jar-archetype/src/main/resources/archetype-resources/run.bat
+++ b/archetypes/alfresco-share-jar-archetype/src/main/resources/archetype-resources/run.bat
@@ -3,6 +3,14 @@
SET COMPOSE_FILE_PATH=%CD%\target\classes\docker\docker-compose.yml
+IF [%M2_HOME%]==[] (
+ SET MVN_EXEC=mvn
+)
+
+IF NOT [%M2_HOME%]==[] (
+ SET MVN_EXEC=%M2_HOME%\bin\mvn
+)
+
IF [%1]==[] (
echo "Usage: %0 {build_start|start|stop|purge|tail|reload_share|build_test|test}"
GOTO END
@@ -44,6 +52,7 @@ IF %1==build_test (
CALL :build
CALL :start
CALL :test
+ CALL :tail_all
CALL :down
GOTO END
)
@@ -70,19 +79,22 @@ EXIT /B 0
:build
docker rmi alfresco-content-services-${rootArtifactId}:development
docker rmi alfresco-share-${rootArtifactId}:development
- call mvn clean install -DskipTests
+ call %MVN_EXEC% clean install -DskipTests
EXIT /B 0
:build_share
docker-compose -f "%COMPOSE_FILE_PATH%" kill ${rootArtifactId}-share
docker-compose -f "%COMPOSE_FILE_PATH%" rm -f ${rootArtifactId}-share
docker rmi alfresco-share-${rootArtifactId}:development
- call mvn clean install -DskipTests
+ call %MVN_EXEC% clean install -DskipTests
EXIT /B 0
:tail
docker-compose -f "%COMPOSE_FILE_PATH%" logs -f
EXIT /B 0
+:tail_all
+ docker-compose -f "%COMPOSE_FILE_PATH%" logs --tail="all"
+EXIT /B 0
:test
- call mvn verify
+ call %MVN_EXEC% verify
EXIT /B 0
:purge
docker volume rm ${rootArtifactId}-acs-volume
diff --git a/archetypes/alfresco-share-jar-archetype/src/main/resources/archetype-resources/run.sh b/archetypes/alfresco-share-jar-archetype/src/main/resources/archetype-resources/run.sh
index 8702f69c..86ac8474 100755
--- a/archetypes/alfresco-share-jar-archetype/src/main/resources/archetype-resources/run.sh
+++ b/archetypes/alfresco-share-jar-archetype/src/main/resources/archetype-resources/run.sh
@@ -3,6 +3,12 @@
export COMPOSE_FILE_PATH=${symbol_dollar}{PWD}/target/classes/docker/docker-compose.yml
+if [ -z "${symbol_dollar}{M2_HOME}" ]; then
+ export MVN_EXEC="mvn"
+else
+ export MVN_EXEC="${symbol_dollar}{M2_HOME}/bin/mvn"
+fi
+
start() {
docker volume create ${rootArtifactId}-acs-volume
docker volume create ${rootArtifactId}-db-volume
@@ -26,22 +32,26 @@ purge() {
build() {
docker rmi alfresco-share-${rootArtifactId}:development
- mvn clean install -DskipTests=true
+ ${symbol_dollar}MVN_EXEC clean install -DskipTests=true
}
build_share() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH kill ${rootArtifactId}-share
yes | docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH rm -f ${rootArtifactId}-share
docker rmi alfresco-share-${rootArtifactId}:development
- mvn clean install -DskipTests=true
+ ${symbol_dollar}MVN_EXEC clean install -DskipTests=true
}
tail() {
docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH logs -f
}
+tail_all() {
+ docker-compose -f ${symbol_dollar}COMPOSE_FILE_PATH logs --tail="all"
+}
+
test() {
- mvn verify
+ ${symbol_dollar}MVN_EXEC verify
}
case "${symbol_dollar}1" in
@@ -75,6 +85,7 @@ case "${symbol_dollar}1" in
build
start
test
+ tail_all
down
;;
test)
diff --git a/archetypes/archetypes-it/pom.xml b/archetypes/archetypes-it/pom.xml
index e27bd223..75419f6f 100644
--- a/archetypes/archetypes-it/pom.xml
+++ b/archetypes/archetypes-it/pom.xml
@@ -9,6 +9,12 @@
Archetypes IT
Archetypes Integration Tests
+
+ 1.7.12
+ 1.8
+ 1.8
+
+
org.alfresco.maven
alfresco-sdk-aggregator
@@ -29,6 +35,18 @@
4.8.1
test
+
+ org.slf4j
+ slf4j-api
+ ${slf4j.version}
+ test
+
+
+ org.slf4j
+ slf4j-simple
+ ${slf4j.version}
+ test
+
@@ -55,6 +73,14 @@
+
+
+ DEBUG
+ false
+ false
+ false
+
+
diff --git a/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/AbstractArchetypeIT.java b/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/AbstractArchetypeIT.java
index 0a1d9bcd..c5f89ded 100644
--- a/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/AbstractArchetypeIT.java
+++ b/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/AbstractArchetypeIT.java
@@ -3,6 +3,8 @@ package org.alfresco.maven.archetype;
import org.apache.maven.it.VerificationException;
import org.apache.maven.it.Verifier;
import org.junit.Before;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
@@ -14,6 +16,8 @@ import java.io.IOException;
*/
public abstract class AbstractArchetypeIT {
+ private static final Logger LOG = LoggerFactory.getLogger(AbstractArchetypeIT.class);
+
protected static final File ROOT = new File("target/test-classes/");
protected static final String LOG_FILENAME = "log.txt";
protected static final String ERROR_FILENAME = "error.txt";
@@ -46,11 +50,16 @@ public abstract class AbstractArchetypeIT {
/**
* Generate a new project from an archetype and verify the generation was successful.
*/
- protected void generateProjectFromArchetype() throws Exception {
+ protected void generateProjectFromArchetype(final Logger logger) throws Exception {
+ LOG.info("---------------------------------------------------------------------");
+ LOG.info("Generating a new project from the archetype {}:{}:{}", archetypeProperties.getArchetypeGroupId(), archetypeProperties.getArchetypeArtifactId(),
+ archetypeProperties.getArchetypeVersion());
+ LOG.info("---------------------------------------------------------------------");
Verifier verifier = new Verifier(ROOT.getAbsolutePath());
verifier.setSystemProperties(archetypeProperties.getSystemProperties());
verifier.setAutoclean(false);
verifier.executeGoal("archetype:generate");
+ printVerifierLog("PROJECT GENERATION", verifier, logger);
verifier.verifyErrorFreeLog();
}
@@ -62,12 +71,27 @@ public abstract class AbstractArchetypeIT {
*/
protected ProcessBuilder getProcessBuilder(final String goalToExecute) {
ProcessBuilder pb = new ProcessBuilder(getCommand(), goalToExecute);
+ LOG.trace("ProcessBuilder environment: {}", pb.environment().toString());
pb.directory(new File(projectPath));
pb.redirectOutput(new File(projectPath + File.separator + LOG_FILENAME));
pb.redirectError(new File(projectPath + File.separator + ERROR_FILENAME));
return pb;
}
+ /**
+ * Print the content of the log file of a {@link Verifier} into a specific {@link Logger}.
+ *
+ * @param prefix the prefix to print before each line
+ * @param verifier the {@link Verifier} to print its log file content
+ * @param logger the {@link Logger} to print the log content
+ */
+ protected void printVerifierLog(final String prefix, final Verifier verifier, final Logger logger) throws Exception {
+ logger.info("[{}] - {}", prefix, "Standard output");
+ verifier.loadFile(verifier.getBasedir(), verifier.getLogFileName(), false).forEach(line -> logger.info("[{}] - {}", prefix, line));
+ logger.info("[{}] - {}", prefix, "Error output");
+ verifier.loadFile(verifier.getBasedir(), ERROR_FILENAME, false).forEach(line -> logger.info("[{}] - {}", prefix, line));
+ }
+
private String getCommand() {
return projectPath + File.separator + (System.getProperty("os.name").startsWith("Windows") ? WINDOWS_EXEC : LINUX_EXEC);
}
diff --git a/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/AllInOneArchetypeIT.java b/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/AllInOneArchetypeIT.java
index db0a5cdc..d4e40f00 100644
--- a/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/AllInOneArchetypeIT.java
+++ b/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/AllInOneArchetypeIT.java
@@ -2,12 +2,16 @@ package org.alfresco.maven.archetype;
import org.apache.maven.it.Verifier;
import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Integration tests for the all-in-one archetype.
*/
public class AllInOneArchetypeIT extends AbstractArchetypeIT {
+ private static final Logger LOGGER = LoggerFactory.getLogger(AllInOneArchetypeIT.class);
+
@Override
protected ArchetypeProperties createArchetypeProperties() {
return ArchetypeProperties.builder()
@@ -23,7 +27,11 @@ public class AllInOneArchetypeIT extends AbstractArchetypeIT {
@Test
public void whenGenerateProjectFromArchetypeThenAProperProjectIsCreated() throws Exception {
- generateProjectFromArchetype();
+ generateProjectFromArchetype(LOGGER);
+
+ LOGGER.info("---------------------------------------------------------------------");
+ LOGGER.info("Building the generated project {}", archetypeProperties.getProjectArtifactId());
+ LOGGER.info("---------------------------------------------------------------------");
// Since creating the archetype was successful, we now want to actually build the generated project executing the integration tests
// Execute a purge to ensure old data don't make the test fail
@@ -36,6 +44,7 @@ public class AllInOneArchetypeIT extends AbstractArchetypeIT {
Verifier verifier = new Verifier(projectPath);
verifier.setAutoclean(false);
verifier.setLogFileName(LOG_FILENAME);
+ printVerifierLog("PROJECT BUILD", verifier, LOGGER);
verifier.verifyErrorFreeLog();
verifier.verifyTextInLog("Tests run: 5, Failures: 0, Errors: 0, Skipped: 0");
}
diff --git a/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/PlatformJarArchetypeIT.java b/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/PlatformJarArchetypeIT.java
index 4f824ef7..1aee782f 100644
--- a/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/PlatformJarArchetypeIT.java
+++ b/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/PlatformJarArchetypeIT.java
@@ -2,12 +2,16 @@ package org.alfresco.maven.archetype;
import org.apache.maven.it.Verifier;
import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Integration tests for the platform jar archetype.
*/
public class PlatformJarArchetypeIT extends AbstractArchetypeIT {
+ private static final Logger LOGGER = LoggerFactory.getLogger(PlatformJarArchetypeIT.class);
+
@Override
protected ArchetypeProperties createArchetypeProperties() {
return ArchetypeProperties.builder()
@@ -22,12 +26,17 @@ public class PlatformJarArchetypeIT extends AbstractArchetypeIT {
@Test
public void whenGenerateProjectFromArchetypeThenAProperProjectIsCreated() throws Exception {
- generateProjectFromArchetype();
+ generateProjectFromArchetype(LOGGER);
+
+ LOGGER.info("---------------------------------------------------------------------");
+ LOGGER.info("Building the generated project {}", archetypeProperties.getProjectArtifactId());
+ LOGGER.info("---------------------------------------------------------------------");
// Since creating the archetype was successful, we now want to actually build the generated project
Verifier verifier = new Verifier(projectPath);
verifier.setAutoclean(false);
verifier.executeGoal("install");
+ printVerifierLog("PROJECT BUILD", verifier, LOGGER);
verifier.verifyErrorFreeLog();
}
}
diff --git a/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/ShareJarArchetypeIT.java b/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/ShareJarArchetypeIT.java
index 063d39d4..fbdfdb30 100644
--- a/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/ShareJarArchetypeIT.java
+++ b/archetypes/archetypes-it/src/test/java/org/alfresco/maven/archetype/ShareJarArchetypeIT.java
@@ -2,12 +2,16 @@ package org.alfresco.maven.archetype;
import org.apache.maven.it.Verifier;
import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Integration tests for the share jar archetype.
*/
public class ShareJarArchetypeIT extends AbstractArchetypeIT {
+ private static final Logger LOGGER = LoggerFactory.getLogger(ShareJarArchetypeIT.class);
+
@Override
protected ArchetypeProperties createArchetypeProperties() {
return ArchetypeProperties.builder()
@@ -22,12 +26,17 @@ public class ShareJarArchetypeIT extends AbstractArchetypeIT {
@Test
public void whenGenerateProjectFromArchetypeThenAProperProjectIsCreated() throws Exception {
- generateProjectFromArchetype();
+ generateProjectFromArchetype(LOGGER);
+
+ LOGGER.info("---------------------------------------------------------------------");
+ LOGGER.info("Building the generated project {}", archetypeProperties.getProjectArtifactId());
+ LOGGER.info("---------------------------------------------------------------------");
// Since creating the archetype was successful, we now want to actually build the generated project
Verifier verifier = new Verifier(projectPath);
verifier.setAutoclean(false);
verifier.executeGoal("install");
+ printVerifierLog("PROJECT BUILD", verifier, LOGGER);
verifier.verifyErrorFreeLog();
}
}