diff --git a/pom.xml b/pom.xml index 5745f7d7f5..ca6cc99c61 100644 --- a/pom.xml +++ b/pom.xml @@ -271,7 +271,12 @@ ${aetherVersion} provided - + + com.toomuchcoding.jsonassert + jsonassert + 0.3.0 + test + org.apache.maven.shared maven-filtering diff --git a/src/main/groovy/io/codearte/accurest/maven/ConvertMojo.groovy b/src/main/groovy/io/codearte/accurest/maven/ConvertMojo.groovy index 9820d50781..5b57bc6865 100644 --- a/src/main/groovy/io/codearte/accurest/maven/ConvertMojo.groovy +++ b/src/main/groovy/io/codearte/accurest/maven/ConvertMojo.groovy @@ -57,7 +57,7 @@ class ConvertMojo extends AbstractMojo { AccurestConfigProperties config = new AccurestConfigProperties() config.contractsDslDir = insideProject ? contractsDirectory : source - config.stubsOutputDir = insideProject ? new File(outputDirectory, 'mappings') : destination + config.stubsOutputDir = insideProject ? new File(outputDirectory, 'mappings') : destination log.info('Converting from accurest contracts written in GroovyDSL to WireMock stubs mappings') log.info(" Accurest contracts directory: ${config.contractsDslDir}") @@ -72,8 +72,7 @@ class ConvertMojo extends AbstractMojo { Resource testResource = new Resource(directory: contractsDirectory.absolutePath) MavenResourcesExecution mavenResourcesExecution = new MavenResourcesExecution([testResource], - new File(outputDirectory, 'contracts'), project, 'UTF-8', - [], [], mavenSession); + new File(outputDirectory, 'accurest'), project, 'UTF-8', [], [], mavenSession); mavenResourcesExecution.injectProjectBuildFilters = false mavenResourcesExecution.overwrite = true mavenResourcesExecution.includeEmptyDirs = false diff --git a/src/main/groovy/io/codearte/accurest/maven/GenerateStubsMojo.groovy b/src/main/groovy/io/codearte/accurest/maven/GenerateStubsMojo.groovy index 53bd066431..d8e7769e63 100644 --- a/src/main/groovy/io/codearte/accurest/maven/GenerateStubsMojo.groovy +++ b/src/main/groovy/io/codearte/accurest/maven/GenerateStubsMojo.groovy @@ -1,6 +1,7 @@ package io.codearte.accurest.maven import groovy.transform.CompileStatic +import org.apache.maven.model.Plugin import org.apache.maven.plugin.AbstractMojo import org.apache.maven.plugin.MojoExecutionException import org.apache.maven.plugin.MojoFailureException @@ -12,6 +13,7 @@ import org.apache.maven.project.MavenProject import org.apache.maven.project.MavenProjectHelper import org.codehaus.plexus.archiver.Archiver import org.codehaus.plexus.archiver.jar.JarArchiver +import org.codehaus.plexus.archiver.jar.Manifest @Mojo(name = 'generateStubs', defaultPhase = LifecyclePhase.PACKAGE, requiresProject = true) @CompileStatic @@ -36,7 +38,7 @@ class GenerateStubsMojo extends AbstractMojo { private MavenProject project @Component(role = Archiver.class, hint = "jar") - private JarArchiver jarArchiver; + private JarArchiver archiver; @Parameter(defaultValue = 'true') private boolean attachContracts @@ -64,18 +66,32 @@ class GenerateStubsMojo extends AbstractMojo { try { if (attachContracts) { - jarArchiver.addDirectory(stubsOutputDir, [STUB_MAPPING_FILE_PATTERN, ACCUREST_FILE_PATTERN] as String[], [] as String[]); + archiver.addDirectory(stubsOutputDir, [STUB_MAPPING_FILE_PATTERN, ACCUREST_FILE_PATTERN] as String[], [] as String[]); } else { log.info("Skipping attaching accurest contracts") - jarArchiver.addDirectory(stubsOutputDir, [STUB_MAPPING_FILE_PATTERN] as String[], [ACCUREST_FILE_PATTERN] as String[]); + archiver.addDirectory(stubsOutputDir, [STUB_MAPPING_FILE_PATTERN] as String[], [ACCUREST_FILE_PATTERN] as String[]); } - jarArchiver.setCompress(true); - jarArchiver.setDestFile(stubsJarFile); - jarArchiver.createArchive(); + archiver.setCompress(true); + archiver.setDestFile(stubsJarFile); + archiver.addConfiguredManifest(createManifest()); + archiver.createArchive(); } catch (Exception e) { throw new MojoFailureException("Exception while packaging ${classifier} jar.", e); } return stubsJarFile } + private Manifest createManifest() { + Manifest manifest = new Manifest(); + Plugin accurestMavenPlugin = project.getBuildPlugins().find { it.artifactId == 'accurest-maven-plugin' } + manifest.addConfiguredAttribute(new Manifest.Attribute("Accurest-Maven-Plugin-Version", accurestMavenPlugin.version)); + if (accurestMavenPlugin.getDependencies()) { + String accurestVersion = accurestMavenPlugin.getDependencies().find { + it.artifactId == 'accurest-core' + }.version + manifest.addConfiguredAttribute(new Manifest.Attribute("Accurest-Version", accurestVersion)); + } + return manifest + } + } diff --git a/src/test/java/io/codearte/accurest/maven/PluginUnitTest.java b/src/test/java/io/codearte/accurest/maven/PluginUnitTest.java index 47b3c659a3..d174e26a8e 100644 --- a/src/test/java/io/codearte/accurest/maven/PluginUnitTest.java +++ b/src/test/java/io/codearte/accurest/maven/PluginUnitTest.java @@ -2,6 +2,7 @@ package io.codearte.accurest.maven; import static io.takari.maven.testing.TestMavenRuntime.newParameter; import static io.takari.maven.testing.TestResources.assertFileContents; +import static io.takari.maven.testing.TestResources.assertFilesNotPresent; import static io.takari.maven.testing.TestResources.assertFilesPresent; import java.io.File; @@ -26,6 +27,7 @@ public class PluginUnitTest { File basedir = resources.getBasedir("basic"); maven.executeMojo(basedir, "convert"); assertFilesPresent(basedir, "target/accurest/mappings/Sample.json"); + assertFilesNotPresent(basedir, "target/accurest/mappings/Messaging.json"); } @Test @@ -35,6 +37,13 @@ public class PluginUnitTest { assertFilesPresent(basedir, "target/accurest/mappings/Sample.json"); } + @Test + public void shouldCopyContracts() throws Exception { + File basedir = resources.getBasedir("basic"); + maven.executeMojo(basedir, "convert"); + assertFilesPresent(basedir, "target/accurest/accurest/Sample.groovy"); + assertFilesPresent(basedir, "target/accurest/accurest/Messaging.groovy"); + } @Test public void shouldGenerateWireMockStubsInSelectedLocation() throws Exception { File basedir = resources.getBasedir("basic"); diff --git a/src/test/projects/basic/src/test/accurest/Messaging.groovy b/src/test/projects/basic/src/test/accurest/Messaging.groovy new file mode 100644 index 0000000000..43b8b41c06 --- /dev/null +++ b/src/test/projects/basic/src/test/accurest/Messaging.groovy @@ -0,0 +1,23 @@ +import io.codearte.accurest.dsl.GroovyDsl + +GroovyDsl.make { + label 'some_label' + input { + messageFrom('jms:input') + messageBody([ + bookName: 'foo' + ]) + messageHeaders { + header('sample', 'header') + } + } + outputMessage { + sentTo('jms:output') + body([ + bookName: 'foo' + ]) + headers { + header('BOOK-NAME', 'foo') + } + } +} \ No newline at end of file diff --git a/src/test/projects/complex-configuration/pom.xml b/src/test/projects/complex-configuration/pom.xml index 756ca7d8f1..32eed3c57e 100644 --- a/src/test/projects/complex-configuration/pom.xml +++ b/src/test/projects/complex-configuration/pom.xml @@ -45,13 +45,13 @@ com.toomuchcoding.jsonassert jsonassert - 0.3.0 + 0.4.1 test org.assertj assertj-core - 2.3.0 + 2.4.0 test diff --git a/src/test/projects/spring-boot-groovy/pom.xml b/src/test/projects/spring-boot-groovy/pom.xml index f833504383..ac52188ed6 100644 --- a/src/test/projects/spring-boot-groovy/pom.xml +++ b/src/test/projects/spring-boot-groovy/pom.xml @@ -46,7 +46,7 @@ com.toomuchcoding.jsonassert jsonassert - 0.3.0 + 0.4.1 test diff --git a/src/test/projects/spring-boot-java/pom.xml b/src/test/projects/spring-boot-java/pom.xml index db9953406d..ecda0561c2 100644 --- a/src/test/projects/spring-boot-java/pom.xml +++ b/src/test/projects/spring-boot-java/pom.xml @@ -45,13 +45,13 @@ com.toomuchcoding.jsonassert jsonassert - 0.3.0 + 0.4.1 test org.assertj assertj-core - 2.3.0 + 2.4.0 test