This tool allows the generation of a p2 site from a Domino installation folder, similar to the official IBM Domino Update Site for Build Management, as well as the Mavenization of a p2 site generated in that way. This is useful to compile code that targets a newer release of Domino than the one packaged officially.
To use the tool from the command line, either add the OpenNTF Maven repository (https://artifactory.openntf.org/openntf) as a plugin repository to your Maven configuration or install the Maven project
- A Notes or Domino installation filesystem-accessible to the running computer
- Maven 3+
- Java 8+
The tool performs several tasks to generate its result:
- Copies the features and plugins from the
osgi/rcp/eclipe
andosgi/shared/eclipse
directories, converting unpacked folder artifacts back into Jar files - If pointed to a Windows Notes installation directory, it will do the same with the
framework
directory, which contains UI-specific plugins - Generates
com.ibm.notes.java.api
andcom.ibm.notes.java.api.win32.linux
bundles using Domino's Notes.jar with a version matching today's date, if needed - Generates a
com.ibm.xsp.http.bootstrap
bundle in similar fashion, when the JAR is available in the source - Downloads source bundles for open-source components found in Eclipse's Neon repository
- Creates a basic site.xml file
- Generates artifacts.jar and content.jar files
Add the OpenNTF Maven server to your ~/.m2/settings.xml file. For example:
<?xml version="1.0"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<profiles>
<profile>
<id>openntf</id>
<pluginRepositories>
<pluginRepository>
<id>artifactory.openntf.org</id>
<name>artifactory.openntf.org</name>
<url>https://artifactory.openntf.org/openntf</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>openntf</activeProfile>
</activeProfiles>
</settings>
Execute the plugin with properties to point to the base of your Domino installation and the target folder. For example:
$ mvn org.openntf.p2:generate-domino-update-site:5.0.0:generateUpdateSite \
-Dsrc="/Volumes/C/Program Files/IBM/Domino" \
-Ddest="/Users/someuser/Desktop/UpdateSite" \
-DflattenEmbeds=false # optional
src
is the location of Domino. On Windows, this might be "C:\Program Files\IBM\Domino". If unspecified, the Mojo will attempt to find a Domino or Notes installation based on common locationsdest
is where you want to save it to. For the Extension Library, this was historically "C:\UpdateSite", but it can be anywhereflattenEmbeds
will look for embedded JARs named with Bundle-ClassPath and expand their contents out into the main bundle
Note: the flattenEmbeds
option strips signature files and makes no attempt to merge conflicts between same-named files. Accordingly, the result bundles may not behave the same way as their original versions.
To incorporate the tool into another program, create a new object of class org.openntf.p2.domino.updatesite.tasks.GenerateUpdateSiteTask
with the same parameters as via the command line and execute its run
method (or provide it to any executor that can take a Runnable
).
Though this Mojo still exists in this plugin, you should consider using the p2-layout-resolver
plugin instead.
This tool processes a p2 site (or a bundles directory directly) and installs the contents into the local Maven repository. It derives its Maven information from the configuration bundle's manifest:
- The
groupId
can be set with the "groupId" parameter, and defaults to "com.ibm.xsp" - The
artifactId
is the bundle's symbolic name - The
version
is the bundle version - The
organization
is theBundle-Vendor
value, if present - The
dependencies
are other created bundles based on theRequire-Bundle
value
Additionally, this installs any embedded JARs as attached entities with the classifier
matching their base name. For example, Notes.jar from the 9.0.1 release can be accessed like:
<dependency>
<groupId>com.ibm.xsp</groupId>
<artifactId>com.ibm.notes.java.api.win32.linux</artifactId>
<version>[9.0.1,)</version>
<classifier>Notes</classifier>
<scope>provided</scope>
</dependency>
Execute the plugin with properties to point to the base of your Domino installation and the target folder. For example:
$ mvn org.openntf.p2:generate-domino-update-site:5.0.0:mavenizeBundles \
-Dsrc="/Users/someuser/Desktop/UpdateSite" \
-DgroupId=some.group.id # Optional
-DoptionalDependencies=false # Optional
-DlocalRepositoryPath=/foo/bar # Optional
src
is the location of the Update SitegroupId
is an optional group ID to use for the installed bundles. It defaults to "com.ibm.xsp"optionalDependencies
sets whether inter-bundle dependencies should be marked as<optional>true</optional>
localRepositoryPath
sets a local repository directory to use instead of the default
This mojo is similar to the mavenizeBundles
mojo, but deploys the bundles to a remote repository.
It has the same options and behavior as mavenizeBundles
, with the exception of localRepositoryPath
. Instead, it requires deploymentRepository
in the same format as altDeploymentRepository
in the maven-install-plugin:deploy
goal. For example:
$ mvn org.openntf.p2:generate-domino-update-site:5.0.0:mavenizeAndDeployBundles \
-Dsrc="/Users/someuser/Desktop/UpdateSite" \
-DdeploymentRepository=some.repo::default::https://some.repo/path
-DgroupId=some.group.id # Optional
-DoptionalDependencies=false # Optional