Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current Restore this Version View Page History

« Previous Version 4 Next »

The Fabric3 assembly plugin is used to create a runtime image as part of an automated, reproducible Maven build process. The plugin downloads the Fabric3 standalone runtime as well as required profiles and extensions and application contributions. In addition, it can apply custom configuration to the runtime image. The Fabric3 assembly plugin will use these artifacts to create a runtime distribution complete with installed application contributions. During a Maven release process, the runtime image can be uploaded to a Maven repository where it can be accessed by IT automation software during system deployment.

Plugin Setup

The excerpt shows the basic plugin setup in a Maven POM file:

<plugins>
    <plugin>
        <groupId>org.codehaus.fabric3</groupId>
        <artifactId>fabric3-assembly-plugin</artifactId>
        <version>${fabric3.version}</version>
        <executions>
            <execution>
                <id>fabric3-assembly</id>
                <goals>
                    <goal>fabric3-assembly</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <runtimeVersion>${fabric3.version}</runtimeVersion>
			<contributions>
                 <dependency>
                    <groupId>org.fabric3.samples</groupId>
                    <artifactId>gateway</artifactId>
                    <version>${app.version}</version>
				</dependency>
			<contributions>
        </configuration>
    </plugin>
</plugins>

The above excerpt will create a runtime image with one installed application contribution. When executed, the plugin will place the resulting runtime image in the project.build.directory/image directory. The Fabric3 assembly plugin is typically used in conjunction with the Maven assembly plugin to produce a compressed archive. This can be done as follows:

<plugins>
    <plugin>
        <groupId>org.codehaus.fabric3</groupId>
        <artifactId>fabric3-assembly-plugin</artifactId>
        <version>${fabric3.version}</version>
        <executions>
            <execution>
                <id>fabric3-assembly</id>
                <goals>
                    <goal>fabric3-assembly</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <runtimeVersion>${fabric3.version}</runtimeVersion>
			<contributions>
                 <dependency>
                    <groupId>org.fabric3.samples</groupId>
                    <artifactId>gateway</artifactId>
                    <version>${app.version}</version>
				</dependency>
			<contributions>
        </configuration>
    </plugin>
    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>${assembly.version}</version>
        <executions>
            <execution>
                <id>make-assembly</id>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
             </execution>
        </executions>
    </plugin>
</plugins>

The Maven assembly.xml will then compress the runtime image into a ZIP file:

<assembly ....>
    <id>bin</id>
    <baseDirectory>${project.build.directory}</baseDirectory>
    <formats>
        <format>zip</format>
    </formats>
    <fileSets>
        <fileSet>
            <outputDirectory>/</outputDirectory>
            <directory>${project.build.directory}/image</directory>
        </fileSet>
    </fileSets>
</assembly> 

Adding Contributions

-->disable scan directory

Adding Configuration

 

Adding Profiles

 

Adding Extensions

 

Excluding Extensions

 

 

 

<plugins>
    <plugin>
        <groupId>org.codehaus.fabric3</groupId>
        <artifactId>fabric3-assembly-plugin</artifactId>
        <version>${fabric3.version}</version>
        <executions>
            <execution>
                <id>fabric3-assembly</id>
                <goals>
                    <goal>fabric3-assembly</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <runtimeVersion>${fabric3.version}</runtimeVersion>
            <profiles>
                <!-- JMS support -->
                <profile>
                    <groupId>org.codehaus.fabric3</groupId>
                    <artifactId>profile-jms</artifactId>
                    <version>${fabric3.version}</version>
                </profile>
                <!-- JAX-RS support -->
                <profile>
                    <groupId>org.codehaus.fabric3</groupId>
                    <artifactId>profile-rs</artifactId>
                    <version>${fabric3.version}</version>
                </profile>
            </profiles>
            <!-- add contributions -->
			<contributions>
                 <dependency>
                    <groupId>org.fabric3.samples</groupId>
                    <artifactId>gateway</artifactId>
                    <version>${app.version}</version>
				</dependency>
				<dependency>
                    <groupId>org.fabric3.samples</groupId>
                    <artifactId>backend</artifactId>
                    <version>${app.version}</version>
				</dependency>
			</contributions>
            <!-- overlay configuration -->
            <configurationFiles>
                <copy>
                    <source>../../../config/security.xml</source>
                    <destination>runtimes/vm/config</destination>
                </copy>
            </configurationFiles>
        </configuration>
    </plugin>
</plugins>