Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

There are a number of strategies for building the OpenNCP Server and bundling the local classesin the National jar, for example:

  1. Build epsos-ws-server.war in a local build environment using maven profile "national-connector-impl" to include the local classes as a dependency.  The disadvantage with this approach is that the local build server must download all the source files from Google Code repository plus all dependencies from Joinup.
  2. Download a released epsos-ws-server.war from Joinup.  Use a local build script to unpack the archive, bundle in the local classes and then repackage.  This is the preferred approach in Sweden.
  3. Download epsos-ws-server.war from Joinup.  Add local classes to tomcat/lib.  This has been briefly tested and did not work due to class loader errors.  Furthermore it is never a good idea to deploy application-specific classes into tomcat/lib.

Local build using profile

Here are the profiles that are declared in the Protocol Terminator pom file.

Code Block
languagehtml/xml
	<profiles>
		<profile>
			<!-- This profile bundles a mock National Connector implementation -->
			<id>national-connector-mock-impl</id>
			<dependencies>
				<dependency>
                    <groupId>eu.europa.ec.joinup.ecc.epsos-protocol-terminators.epsos-ncp-server</groupId>
                    <artifactId>epsos-nc-mock-it</artifactId>
                    <version>0.1-SNAPSHOT</version>
                    <scope>runtime</scope>
                </dependency>
			</dependencies>
		</profile>
		<profile>
			<!-- This profile bundles the real National Connector implementation -->
			<id>national-connector-impl</id>
			<dependencies>
				<dependency>
					<groupId>${national-connector-impl.groupId}</groupId>
					<artifactId>${national-connector-impl.artifactId}</artifactId>
					<version>${national-connector-impl.version}</version>
					<scope>runtime</scope>
				</dependency>
			</dependencies>
		</profile>
	</profiles>

The first profile bundles the a mock implementations implementation into the war file.  The second profile bundles a National implementation.  If no profile is specified then no implementation will be bundled at all.  In this case, the jar must be deployed to the tomcat/lib directory.The National profile needs some properties.  These properties are defined

To use the National profile some properties must be set in the local build environment.  There are a few options for doing this:

Per User

- Defined in the Maven-settings (%USER_HOME%/.m2/settings.xml).

...

Code Block
languagehtml/xml
<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>national-connector-impl</id>
      <properties>
        <national-connector-impl.groupId>se.apotekensservice</national-connector-impl.groupId>
        <national-connector-impl.artifactId>epsos-shelob</national-connector-impl.artifactId>
        <national-connector-impl.version>0.0.1-SNAPSHOT<version>1.1</national-connector-impl.version>
      </properties>
    </profile>
  </profiles>
</settings>

Here are the Maven commands for activating the various profiles:

Code Block
languagenone
# build epsos-ws-serverwith no implementation
mvn clean install
 
# build epsos-ws-server with mock implementations
mvn clean install -P national-connector-mock-impl
 
# build epsos-ws-server with real implementations
mvn clean install -P national-connector-impl

...