| = Meecrowave Maven |
| :jbake-date: 2016-10-24 |
| :jbake-type: page |
| :jbake-status: published |
| :jbake-meecrowavepdf: |
| :jbake-meecrowavetitleicon: icon icon_puzzle_alt |
| :jbake-meecrowavecolor: body-blue |
| :icons: font |
| |
| Coordinates: |
| |
| [source,xml] |
| ---- |
| <plugin> |
| <groupId>org.apache.meecrowave</groupId> |
| <artifactId>meecrowave-maven-plugin</artifactId> |
| <version>${meecrowave.version}</version> |
| </plugin> |
| ---- |
| |
| TIP: most of the configuration is inherited from meecrowave-core. |
| |
| Here are the available options (see core configuration for the details): |
| |
| include::../../../../../target/generated-doc/MavenConfiguration.adoc[] |
| |
| == Run |
| |
| `mvn meecrowave:run` enables you to start a server configured in your `pom.xml`. |
| Once started, you have a few commands you can use to interact with the server: |
| |
| - `quit`/`exit`: shutdown properly the server. |
| - `reload` (since 1.2.9): optionally relaunch a maven compilation - see configuration - and reload the web context. |
| |
| == Bundling |
| |
| [source] |
| ---- |
| mvn meecrowave:bundle |
| ---- |
| |
| This maven goal will create a zip/tar.gz (configurable) ready to launch your application. |
| |
| The layout if the following one: |
| |
| [source] |
| ---- |
| . |
| ├── bin |
| │ └── meecrowave.sh |
| ├── conf |
| │ ├── log4j2.xml |
| │ └── meecrowave.properties |
| ├── lib |
| │ └── *.jar |
| ├── logs |
| │ └── meecrowave.logls l |
| └── temp |
| ---- |
| |
| conf folder supports out of the box these files (but you can add your own if needed): |
| |
| - log4j2.xml |
| - server.xml |
| - meecrowave.properties |
| |
| You can acess the root folder of the distribution reading the system property `meecrowave.base`. |
| |
| `meecrowave.properties` supports all configuration options of the cli (just remove the `--`): http://openwebbeans.apache.org/meecrowave/meecrowave-core/cli.html. |
| |
| Note: you can also split like Tomcat MEECROWAVE_BASE and MEECROWAVE_HOME if you want to extract meecrowave stack in a separate folder (from the application) to be able to update |
| it independently. |
| |
| == Shading |
| |
| Plain Maven shade plugin enables you to build fatjar with Maven. |
| |
| Points to take care are: |
| |
| 1. merge CXF resources |
| 2. merge Log4j2 resources |
| 3. merge OpenWebBeans resources |
| 4. merge SPI files (META-INF/services) |
| 5. ensure signatures are still valid in the aggregated jar |
| |
| [source,xml] |
| ---- |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-shade-plugin</artifactId> |
| <version>3.2.4</version> |
| <executions> |
| <execution> |
| <id>bundle</id> |
| <phase>package</phase> |
| <goals> |
| <goal>shade</goal> |
| </goals> |
| <configuration> |
| <shadedClassifierName>fat</shadedClassifierName> |
| <shadedArtifactAttached>true</shadedArtifactAttached> |
| <dependencyReducedPomLocation>${project.build.directory}/reduced-pom-bundle.xml</dependencyReducedPomLocation> |
| <transformers> |
| <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> |
| <mainClass>org.apache.meecrowave.runner.Cli</mainClass> |
| </transformer> |
| <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> |
| <resource>META-INF/cxf/bus-extensions.txt</resource> |
| </transformer> |
| <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> |
| <resource>log4j2.component.properties</resource> |
| </transformer> |
| <transformer implementation="com.github.edwgiz.maven_shade_plugin.log4j2_cache_transformer.PluginsCacheFileTransformer" /> |
| <transformer implementation="org.apache.maven.plugins.shade.resource.properties.OpenWebBeansPropertiesTransformer" /> |
| <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> |
| </transformers> |
| <filters> |
| <filter> |
| <artifact>*:*</artifact> |
| <excludes> |
| <exclude>META-INF/*.SF</exclude> |
| <exclude>META-INF/*.DSA</exclude> |
| <exclude>META-INF/*.RSA</exclude> |
| <exclude>META-INF/LICENSE.txt</exclude> |
| <exclude>META-INF/LICENSE</exclude> |
| <exclude>META-INF/NOTICE.txt</exclude> |
| <exclude>META-INF/NOTICE</exclude> |
| </excludes> |
| </filter> |
| </filters> |
| </configuration> |
| </execution> |
| </executions> |
| <dependencies> |
| <dependency> |
| <groupId>com.github.edwgiz</groupId> |
| <artifactId>maven-shade-plugin.log4j2-cachefile-transformer</artifactId> |
| <version>2.13.3</version> |
| </dependency> |
| </dependencies> |
| </plugin> |
| ---- |
| |