Prerequisites
Maven3 and Ant needs to be installed.
Steps
The following are the steps for creating a new feature installed distribution:
Create a directory and copy the
pom.xml
file given below.This example provides a sample
pom.xml
file to create a new feature installed distribution, which uses the default profile (<profile>default</profile>
) and the corresponding directory path (dir="<PRODUCT_NAME>/repository/components/default/configuration/org.eclipse.equinox.simpleconfigurator">
).You need to update these values as follows:
- The name of your product should replace
<PRODUCT_HOME>
(e.g., ESB-4.8.1). - The relevant profile (e.g., default) should replace
$profile
. Read more about profiles from here.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.wso2.sample</groupId> <artifactId>sample-feature-installation</artifactId> <version>1.0.0</version> <packaging>pom</packaging> <name>Creating custom distribution</name> <url>http://wso2.org</url> <build> <plugins> <plugin> <groupId>org.wso2.maven</groupId> <artifactId>carbon-p2-plugin</artifactId> <version>1.5.3</version> <executions> <execution> <id>feature-install</id> <phase>package</phase> <goals> <goal>p2-profile-gen</goal> </goals> <configuration> <profile>default</profile> <metadataRepository>file:p2-repo</metadataRepository> <artifactRepository>file:p2-repo</artifactRepository> <destination>$distribution_name/repository/components</destination> <deleteOldProfileFiles>true</deleteOldProfileFiles> <features> <feature> <id>org.wso2.carbon.tryit.feature.group</id> <version>4.2.0</version> </feature> </features> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.1</version> <executions> <execution> <phase>package</phase> <configuration> <tasks> <replace token="false" value="true" dir="<PRODUCT_NAME>/repository/components/default/configuration/org.eclipse.equinox.simpleconfigurator"> <include name="**/bundles.info"/> </replace> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <repositories> <repository> <id>wso2-nexus</id> <name>WSO2 internal Repository</name> <url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url> <releases> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>wso2-maven2-repository</id> <url>http://dist.wso2.org/maven2</url> </pluginRepository> <pluginRepository> <id>wso2-maven2-snapshot-repository</id> <url>http://dist.wso2.org/snapshots/maven2</url> </pluginRepository> </pluginRepositories> </project>
For more information on the maven-antrun-plugin, please go to http://maven.apache.org/plugins/maven-antrun-plugin/.
- The name of your product should replace
- Unzip p2-repo.zip (from
http://dist2.wso2.org/p2-zip/carbon/releases/<carbon-version>/
directory) into a folder named p2-repo, which is in the same location as the product distribution. - Replace the
$distribution_name
params found in thepom.xml
file, with the unzipped product distribution name (e.g., wso2carbon-<version>) In the
pom.xml
file, list down the features you want to install into the system. Example:<feature> <id>org.wso2.carbon.tryit.feature.group</id> <version>4.2.0</version> </feature>
Execute the following command:
mvn clean install
Upon successful invocation of the build, the product distribution is provisioned with the new features. This approach is scriptable.