diff --git a/demo/java-demo/pom.xml b/demo/java-demo/pom.xml index 636afe2..3f5192f 100644 --- a/demo/java-demo/pom.xml +++ b/demo/java-demo/pom.xml @@ -27,7 +27,7 @@ com.alibaba.testable - core + testable-core ${testable.version} provided @@ -56,12 +56,17 @@ spring-boot-maven-plugin - org.apache.maven.plugins - maven-surefire-plugin - - - @{argLine} -javaagent:${settings.localRepository}/com/alibaba/testable/agent/${testable.version}/agent-${testable.version}.jar - + com.alibaba.testable + testable-maven-plugin + ${testable.version} + + + prepare + + prepare + + + org.jacoco diff --git a/demo/kotlin-demo/pom.xml b/demo/kotlin-demo/pom.xml index aad9f5d..3ae9aa9 100644 --- a/demo/kotlin-demo/pom.xml +++ b/demo/kotlin-demo/pom.xml @@ -40,7 +40,7 @@ com.alibaba.testable - core + testable-core ${testable.version} provided @@ -67,11 +67,17 @@ spring-boot-maven-plugin - org.apache.maven.plugins - maven-surefire-plugin - - @{argLine} -javaagent:${settings.localRepository}/com/alibaba/testable/agent/${testable.version}/agent-${testable.version}.jar - + com.alibaba.testable + testable-maven-plugin + ${testable.version} + + + prepare + + prepare + + + org.jetbrains.kotlin diff --git a/pom.xml b/pom.xml index 1c30c15..59cae37 100755 --- a/pom.xml +++ b/pom.xml @@ -9,8 +9,9 @@ pom - agent - core + testable-agent + testable-core + testable-maven-plugin demo diff --git a/agent/pom.xml b/testable-agent/pom.xml similarity index 98% rename from agent/pom.xml rename to testable-agent/pom.xml index 4d141d3..a90ac79 100755 --- a/agent/pom.xml +++ b/testable-agent/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.alibaba.testable - agent + testable-agent 0.1.1-SNAPSHOT jar testable-agent diff --git a/agent/src/main/java/com/alibaba/testable/agent/PreMain.java b/testable-agent/src/main/java/com/alibaba/testable/agent/PreMain.java similarity index 100% rename from agent/src/main/java/com/alibaba/testable/agent/PreMain.java rename to testable-agent/src/main/java/com/alibaba/testable/agent/PreMain.java diff --git a/agent/src/main/java/com/alibaba/testable/agent/constant/ConstPool.java b/testable-agent/src/main/java/com/alibaba/testable/agent/constant/ConstPool.java similarity index 100% rename from agent/src/main/java/com/alibaba/testable/agent/constant/ConstPool.java rename to testable-agent/src/main/java/com/alibaba/testable/agent/constant/ConstPool.java diff --git a/agent/src/main/java/com/alibaba/testable/agent/handler/BaseClassHandler.java b/testable-agent/src/main/java/com/alibaba/testable/agent/handler/BaseClassHandler.java similarity index 100% rename from agent/src/main/java/com/alibaba/testable/agent/handler/BaseClassHandler.java rename to testable-agent/src/main/java/com/alibaba/testable/agent/handler/BaseClassHandler.java diff --git a/agent/src/main/java/com/alibaba/testable/agent/handler/SourceClassHandler.java b/testable-agent/src/main/java/com/alibaba/testable/agent/handler/SourceClassHandler.java similarity index 100% rename from agent/src/main/java/com/alibaba/testable/agent/handler/SourceClassHandler.java rename to testable-agent/src/main/java/com/alibaba/testable/agent/handler/SourceClassHandler.java diff --git a/agent/src/main/java/com/alibaba/testable/agent/handler/TestClassHandler.java b/testable-agent/src/main/java/com/alibaba/testable/agent/handler/TestClassHandler.java similarity index 100% rename from agent/src/main/java/com/alibaba/testable/agent/handler/TestClassHandler.java rename to testable-agent/src/main/java/com/alibaba/testable/agent/handler/TestClassHandler.java diff --git a/agent/src/main/java/com/alibaba/testable/agent/model/ImmutablePair.java b/testable-agent/src/main/java/com/alibaba/testable/agent/model/ImmutablePair.java similarity index 100% rename from agent/src/main/java/com/alibaba/testable/agent/model/ImmutablePair.java rename to testable-agent/src/main/java/com/alibaba/testable/agent/model/ImmutablePair.java diff --git a/agent/src/main/java/com/alibaba/testable/agent/model/MethodInfo.java b/testable-agent/src/main/java/com/alibaba/testable/agent/model/MethodInfo.java similarity index 100% rename from agent/src/main/java/com/alibaba/testable/agent/model/MethodInfo.java rename to testable-agent/src/main/java/com/alibaba/testable/agent/model/MethodInfo.java diff --git a/agent/src/main/java/com/alibaba/testable/agent/transformer/TestableClassTransformer.java b/testable-agent/src/main/java/com/alibaba/testable/agent/transformer/TestableClassTransformer.java similarity index 100% rename from agent/src/main/java/com/alibaba/testable/agent/transformer/TestableClassTransformer.java rename to testable-agent/src/main/java/com/alibaba/testable/agent/transformer/TestableClassTransformer.java diff --git a/agent/src/main/java/com/alibaba/testable/agent/util/BytecodeUtil.java b/testable-agent/src/main/java/com/alibaba/testable/agent/util/BytecodeUtil.java similarity index 100% rename from agent/src/main/java/com/alibaba/testable/agent/util/BytecodeUtil.java rename to testable-agent/src/main/java/com/alibaba/testable/agent/util/BytecodeUtil.java diff --git a/agent/src/main/java/com/alibaba/testable/agent/util/ClassUtil.java b/testable-agent/src/main/java/com/alibaba/testable/agent/util/ClassUtil.java similarity index 100% rename from agent/src/main/java/com/alibaba/testable/agent/util/ClassUtil.java rename to testable-agent/src/main/java/com/alibaba/testable/agent/util/ClassUtil.java diff --git a/agent/src/main/java/com/alibaba/testable/agent/util/CollectionUtil.java b/testable-agent/src/main/java/com/alibaba/testable/agent/util/CollectionUtil.java similarity index 100% rename from agent/src/main/java/com/alibaba/testable/agent/util/CollectionUtil.java rename to testable-agent/src/main/java/com/alibaba/testable/agent/util/CollectionUtil.java diff --git a/agent/src/main/java/com/alibaba/testable/agent/util/StringUtil.java b/testable-agent/src/main/java/com/alibaba/testable/agent/util/StringUtil.java similarity index 100% rename from agent/src/main/java/com/alibaba/testable/agent/util/StringUtil.java rename to testable-agent/src/main/java/com/alibaba/testable/agent/util/StringUtil.java diff --git a/agent/src/test/java/com/alibaba/testable/agent/util/ClassUtilTest.java b/testable-agent/src/test/java/com/alibaba/testable/agent/util/ClassUtilTest.java similarity index 100% rename from agent/src/test/java/com/alibaba/testable/agent/util/ClassUtilTest.java rename to testable-agent/src/test/java/com/alibaba/testable/agent/util/ClassUtilTest.java diff --git a/agent/src/test/java/com/alibaba/testable/agent/util/CollectionUtilTest.java b/testable-agent/src/test/java/com/alibaba/testable/agent/util/CollectionUtilTest.java similarity index 100% rename from agent/src/test/java/com/alibaba/testable/agent/util/CollectionUtilTest.java rename to testable-agent/src/test/java/com/alibaba/testable/agent/util/CollectionUtilTest.java diff --git a/agent/src/test/java/com/alibaba/testable/agent/util/StringUtilTest.java b/testable-agent/src/test/java/com/alibaba/testable/agent/util/StringUtilTest.java similarity index 100% rename from agent/src/test/java/com/alibaba/testable/agent/util/StringUtilTest.java rename to testable-agent/src/test/java/com/alibaba/testable/agent/util/StringUtilTest.java diff --git a/core/pom.xml b/testable-core/pom.xml similarity index 95% rename from core/pom.xml rename to testable-core/pom.xml index e13392c..f4da04c 100644 --- a/core/pom.xml +++ b/testable-core/pom.xml @@ -6,7 +6,7 @@ Unit test enhancement toolkit com.alibaba.testable - core + testable-core 0.1.1-SNAPSHOT testable-core @@ -65,7 +65,7 @@ ${basedir}/target/classes - ${basedir}/../agent/target + ${basedir}/../testable-agent/target testable-agent.jar diff --git a/core/src/main/java/com/alibaba/testable/core/accessor/PrivateAccessor.java b/testable-core/src/main/java/com/alibaba/testable/core/accessor/PrivateAccessor.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/accessor/PrivateAccessor.java rename to testable-core/src/main/java/com/alibaba/testable/core/accessor/PrivateAccessor.java diff --git a/core/src/main/java/com/alibaba/testable/core/annotation/EnableTestable.java b/testable-core/src/main/java/com/alibaba/testable/core/annotation/EnableTestable.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/annotation/EnableTestable.java rename to testable-core/src/main/java/com/alibaba/testable/core/annotation/EnableTestable.java diff --git a/core/src/main/java/com/alibaba/testable/core/annotation/TestableInject.java b/testable-core/src/main/java/com/alibaba/testable/core/annotation/TestableInject.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/annotation/TestableInject.java rename to testable-core/src/main/java/com/alibaba/testable/core/annotation/TestableInject.java diff --git a/core/src/main/java/com/alibaba/testable/core/constant/ConstPool.java b/testable-core/src/main/java/com/alibaba/testable/core/constant/ConstPool.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/constant/ConstPool.java rename to testable-core/src/main/java/com/alibaba/testable/core/constant/ConstPool.java diff --git a/core/src/main/java/com/alibaba/testable/core/generator/BaseGenerator.java b/testable-core/src/main/java/com/alibaba/testable/core/generator/BaseGenerator.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/generator/BaseGenerator.java rename to testable-core/src/main/java/com/alibaba/testable/core/generator/BaseGenerator.java diff --git a/core/src/main/java/com/alibaba/testable/core/generator/PrivateAccessStatementGenerator.java b/testable-core/src/main/java/com/alibaba/testable/core/generator/PrivateAccessStatementGenerator.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/generator/PrivateAccessStatementGenerator.java rename to testable-core/src/main/java/com/alibaba/testable/core/generator/PrivateAccessStatementGenerator.java diff --git a/core/src/main/java/com/alibaba/testable/core/model/TestableContext.java b/testable-core/src/main/java/com/alibaba/testable/core/model/TestableContext.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/model/TestableContext.java rename to testable-core/src/main/java/com/alibaba/testable/core/model/TestableContext.java diff --git a/core/src/main/java/com/alibaba/testable/core/processor/EnableTestableProcessor.java b/testable-core/src/main/java/com/alibaba/testable/core/processor/EnableTestableProcessor.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/processor/EnableTestableProcessor.java rename to testable-core/src/main/java/com/alibaba/testable/core/processor/EnableTestableProcessor.java diff --git a/core/src/main/java/com/alibaba/testable/core/tool/TestableTool.java b/testable-core/src/main/java/com/alibaba/testable/core/tool/TestableTool.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/tool/TestableTool.java rename to testable-core/src/main/java/com/alibaba/testable/core/tool/TestableTool.java diff --git a/core/src/main/java/com/alibaba/testable/core/translator/BaseTranslator.java b/testable-core/src/main/java/com/alibaba/testable/core/translator/BaseTranslator.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/translator/BaseTranslator.java rename to testable-core/src/main/java/com/alibaba/testable/core/translator/BaseTranslator.java diff --git a/core/src/main/java/com/alibaba/testable/core/translator/EnableTestableTranslator.java b/testable-core/src/main/java/com/alibaba/testable/core/translator/EnableTestableTranslator.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/translator/EnableTestableTranslator.java rename to testable-core/src/main/java/com/alibaba/testable/core/translator/EnableTestableTranslator.java diff --git a/core/src/main/java/com/alibaba/testable/core/util/ResourceUtil.java b/testable-core/src/main/java/com/alibaba/testable/core/util/ResourceUtil.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/util/ResourceUtil.java rename to testable-core/src/main/java/com/alibaba/testable/core/util/ResourceUtil.java diff --git a/core/src/main/java/com/alibaba/testable/core/util/StringUtil.java b/testable-core/src/main/java/com/alibaba/testable/core/util/StringUtil.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/util/StringUtil.java rename to testable-core/src/main/java/com/alibaba/testable/core/util/StringUtil.java diff --git a/core/src/main/java/com/alibaba/testable/core/util/TestableLogger.java b/testable-core/src/main/java/com/alibaba/testable/core/util/TestableLogger.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/util/TestableLogger.java rename to testable-core/src/main/java/com/alibaba/testable/core/util/TestableLogger.java diff --git a/core/src/main/java/com/alibaba/testable/core/util/TestableUtil.java b/testable-core/src/main/java/com/alibaba/testable/core/util/TestableUtil.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/util/TestableUtil.java rename to testable-core/src/main/java/com/alibaba/testable/core/util/TestableUtil.java diff --git a/core/src/main/java/com/alibaba/testable/core/util/TypeUtil.java b/testable-core/src/main/java/com/alibaba/testable/core/util/TypeUtil.java similarity index 100% rename from core/src/main/java/com/alibaba/testable/core/util/TypeUtil.java rename to testable-core/src/main/java/com/alibaba/testable/core/util/TypeUtil.java diff --git a/core/src/main/resources/META-INF/services/javax.annotation.processing.Processor b/testable-core/src/main/resources/META-INF/services/javax.annotation.processing.Processor similarity index 100% rename from core/src/main/resources/META-INF/services/javax.annotation.processing.Processor rename to testable-core/src/main/resources/META-INF/services/javax.annotation.processing.Processor diff --git a/core/src/test/java/com/alibaba/testable/core/util/ResourceUtilTest.java b/testable-core/src/test/java/com/alibaba/testable/core/util/ResourceUtilTest.java similarity index 100% rename from core/src/test/java/com/alibaba/testable/core/util/ResourceUtilTest.java rename to testable-core/src/test/java/com/alibaba/testable/core/util/ResourceUtilTest.java diff --git a/core/src/test/java/com/alibaba/testable/core/util/StringUtilTest.java b/testable-core/src/test/java/com/alibaba/testable/core/util/StringUtilTest.java similarity index 100% rename from core/src/test/java/com/alibaba/testable/core/util/StringUtilTest.java rename to testable-core/src/test/java/com/alibaba/testable/core/util/StringUtilTest.java diff --git a/testable-maven-plugin/pom.xml b/testable-maven-plugin/pom.xml new file mode 100644 index 0000000..5129979 --- /dev/null +++ b/testable-maven-plugin/pom.xml @@ -0,0 +1,44 @@ + + 4.0.0 + com.alibaba.testable + testable-maven-plugin + maven-plugin + 0.1.1-SNAPSHOT + testable-maven-plugin + http://maven.apache.org + + + + org.apache.maven + maven-plugin-api + 3.6.3 + + + org.apache.maven + maven-core + 3.6.3 + + + org.apache.maven.plugin-tools + maven-plugin-annotations + 3.6.0 + provided + + + com.alibaba.testable + testable-agent + 0.1.1-SNAPSHOT + + + + + + + org.apache.maven.plugins + maven-plugin-plugin + 3.6.0 + + + + diff --git a/testable-maven-plugin/src/main/java/com/alibaba/testable/TestableMojo.java b/testable-maven-plugin/src/main/java/com/alibaba/testable/TestableMojo.java new file mode 100644 index 0000000..61d2fc7 --- /dev/null +++ b/testable-maven-plugin/src/main/java/com/alibaba/testable/TestableMojo.java @@ -0,0 +1,69 @@ +package com.alibaba.testable; + +import org.apache.maven.artifact.Artifact; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugins.annotations.LifecyclePhase; +import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; +import org.apache.maven.plugins.annotations.ResolutionScope; +import org.apache.maven.project.MavenProject; + +import java.util.Map; +import java.util.Properties; + +/** + * Goal which prepare testable agent. + * + * @author flin + */ +@Mojo(name = "prepare", defaultPhase = LifecyclePhase.INITIALIZE, + requiresDependencyResolution = ResolutionScope.RUNTIME, threadSafe = true) +public class TestableMojo extends AbstractMojo +{ + /** + * Maven project. + */ + @Parameter(property = "project", readonly = true) + private MavenProject project; + /** + * Map of plugin artifacts. + */ + @Parameter(property = "plugin.artifactMap", required = true, readonly = true) + private Map pluginArtifactMap; + /** + * Name of the Testable Agent artifact. + */ + private static final String AGENT_ARTIFACT_NAME = "com.alibaba.testable:testable-agent"; + /** + * Name of the property used in maven-osgi-test-plugin. + */ + private static final String TYCHO_ARG_LINE = "tycho.testArgLine"; + /** + * Name of the property used in maven-surefire-plugin. + */ + private static final String SUREFIRE_ARG_LINE = "argLine"; + /** + * Name of eclipse test plugin + */ + private static final String ECLIPSE_TEST_PLUGIN = "eclipse-test-plugin"; + + public void execute() throws MojoExecutionException + { + final String testArgsPropertyKey = getEffectivePropertyKey(); + final Properties projectProperties = project.getProperties(); + final String oldArgs = projectProperties.getProperty(testArgsPropertyKey); + final String newArgs = (oldArgs == null) ? getAgentJarArgs().trim() : oldArgs + getAgentJarArgs(); + getLog().info(testArgsPropertyKey + " set to " + newArgs); + projectProperties.setProperty(testArgsPropertyKey, newArgs); + } + + private String getAgentJarArgs() { + final Artifact testableAgentArtifact = pluginArtifactMap.get(AGENT_ARTIFACT_NAME); + return " -javaagent:" + testableAgentArtifact.getFile().getAbsolutePath(); + } + + private String getEffectivePropertyKey() { + return ECLIPSE_TEST_PLUGIN.equals(project.getPackaging()) ? TYCHO_ARG_LINE : SUREFIRE_ARG_LINE; + } +}