small, multi-platform docker images
[dmaap/datarouter.git] / datarouter-prov / pom.xml
index a348c78..44f70f5 100755 (executable)
@@ -3,13 +3,14 @@
   * org.onap.dmaap\r
   * ===========================================================================\r
   * Copyright © 2017 AT&T Intellectual Property. All rights reserved.\r
+  * Modifications Copyright (C) 2018 Nokia. All rights reserved.\r
   * ===========================================================================\r
   * Licensed under the Apache License, Version 2.0 (the "License");\r
   * you may not use this file except in compliance with the License.\r
   * You may obtain a copy of the License at\r
-  * \r
+  *\r
    *      http://www.apache.org/licenses/LICENSE-2.0\r
-  * \r
+  *\r
    * Unless required by applicable law or agreed to in writing, software\r
   * distributed under the License is distributed on an "AS IS" BASIS,\r
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
@@ -25,7 +26,7 @@
     <parent>\r
         <groupId>org.onap.dmaap.datarouter</groupId>\r
         <artifactId>parent</artifactId>\r
-        <version>1.0.1-SNAPSHOT</version>\r
+        <version>2.0.2-SNAPSHOT</version>\r
         <relativePath>../pom.xml</relativePath>\r
     </parent>\r
     <artifactId>datarouter-prov</artifactId>\r
 \r
         <docker.location>${basedir}/target/${artifactId}</docker.location>\r
         <datarouter.prov.image.name>onap/dmaap/datarouter-prov</datarouter.prov.image.name>\r
+\r
+        <timestamp>${maven.build.timestamp}</timestamp>\r
+        <maven.build.timestamp.format>yyyyMMdd'T'HHmmss'Z'</maven.build.timestamp.format>\r
+\r
+        <docker.verbose>true</docker.verbose>\r
+        <docker.apiVersion>1.23</docker.apiVersion>\r
     </properties>\r
     <dependencies>\r
+        <dependency>\r
+            <groupId>xml-apis</groupId>\r
+            <artifactId>xml-apis</artifactId>\r
+            <version>${xml-apis.version}</version>\r
+        </dependency>\r
+        <dependency>\r
+            <groupId>org.dom4j</groupId>\r
+            <artifactId>dom4j</artifactId>\r
+            <version>${dom4j.version}</version>\r
+        </dependency>\r
+        <dependency>\r
+            <groupId>commons-codec</groupId>\r
+            <artifactId>commons-codec</artifactId>\r
+            <version>${commons-codec.version}</version>\r
+        </dependency>\r
+        <dependency>\r
+            <groupId>com.google.guava</groupId>\r
+            <artifactId>guava</artifactId>\r
+            <version>${google.guava.version}</version>\r
+        </dependency>\r
         <dependency>\r
             <groupId>ch.qos.logback</groupId>\r
             <artifactId>logback-classic</artifactId>\r
-            <version>1.2.0</version>\r
+            <version>${qos.logback.version}</version>\r
             <scope>compile</scope>\r
         </dependency>\r
         <dependency>\r
             <groupId>ch.qos.logback</groupId>\r
             <artifactId>logback-core</artifactId>\r
-            <version>1.2.0</version>\r
+            <version>${qos.logback.version}</version>\r
             <scope>compile</scope>\r
         </dependency>\r
         <dependency>\r
             <groupId>com.thoughtworks.xstream</groupId>\r
             <artifactId>xstream</artifactId>\r
-            <version>1.4.7</version>\r
+            <version>${thoughtworks.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.json</groupId>\r
         <dependency>\r
             <groupId>javax.mail</groupId>\r
             <artifactId>javax.mail-api</artifactId>\r
-            <version>1.5.1</version>\r
+            <version>${javax.mail-api.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>com.att.eelf</groupId>\r
             <artifactId>eelf-core</artifactId>\r
             <version>0.0.1</version>\r
         </dependency>\r
-        <dependency>\r
-            <groupId>javax.servlet</groupId>\r
-            <artifactId>servlet-api</artifactId>\r
-            <version>2.5</version>\r
-        </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-server</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-continuation</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-util</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-deploy</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-servlet</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-servlets</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-http</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-security</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-websocket</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.websocket.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty</groupId>\r
             <artifactId>jetty-io</artifactId>\r
-            <version>7.6.14.v20131031</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.apache.commons</groupId>\r
             <version>1.6.4</version>\r
             <scope>test</scope>\r
         </dependency>\r
-        <!--        <dependency><groupId>org.junit</groupId><artifactId>com.springsource.org.junit</artifactId><version>4.4.0</version></dependency>-->\r
         <dependency>\r
-            <groupId>mysql</groupId>\r
-            <artifactId>mysql-connector-java</artifactId>\r
-            <version>5.1.21</version>\r
+            <groupId>org.apache.commons</groupId>\r
+            <artifactId>commons-lang3</artifactId>\r
+            <version>3.0</version>\r
+        </dependency>\r
+        <dependency>\r
+            <groupId>org.mariadb.jdbc</groupId>\r
+            <artifactId>mariadb-java-client</artifactId>\r
+            <version>2.2.5</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>org.eclipse.jetty.cdi</groupId>\r
             <artifactId>cdi-websocket</artifactId>\r
-            <version>9.3.11.v20160721</version>\r
+            <version>${jetty.version}</version>\r
         </dependency>\r
         <dependency>\r
             <groupId>log4j</groupId>\r
             <version>1.2.17</version>\r
             <scope>compile</scope>\r
         </dependency>\r
+        <dependency>\r
+            <groupId>com.h2database</groupId>\r
+            <artifactId>h2</artifactId>\r
+            <version>1.4.197</version>\r
+        </dependency>\r
+        <dependency>\r
+            <groupId>org.hibernate</groupId>\r
+            <artifactId>hibernate-entitymanager</artifactId>\r
+            <version>5.2.9.Final</version>\r
+            <exclusions>\r
+                <exclusion>\r
+                    <groupId>dom4j</groupId>\r
+                    <artifactId>dom4j</artifactId>\r
+                </exclusion>\r
+            </exclusions>\r
+        </dependency>\r
     </dependencies>\r
-\r
     <profiles>\r
         <profile>\r
             <id>docker</id>\r
             <properties>\r
-                <skip.docker.build>false</skip.docker.build>\r
-                <skip.docker.tag>false</skip.docker.tag>\r
-                <skip.docker.push>false</skip.docker.push>\r
+                <skipDockerBuild>false</skipDockerBuild>\r
+                <skipDockerTag>false</skipDockerTag>\r
+                <skipTests>true</skipTests>\r
             </properties>\r
+            <build>\r
+                <plugins>\r
+\r
+                    <!-- Setup image tags per https://wiki.onap.org/display/DW/Independent+Versioning+and+Release+Process#IndependentVersioningandReleaseProcess-StandardizedDockerTagging -->\r
+                    <plugin>\r
+                      <groupId>org.codehaus.groovy.maven</groupId>\r
+                      <artifactId>gmaven-plugin</artifactId>\r
+                      <executions>\r
+                          <execution>\r
+                              <phase>validate</phase>\r
+                              <goals>\r
+                                  <goal>execute</goal>\r
+                              </goals>\r
+                              <configuration>\r
+                                  <properties>\r
+                                      <ver>${project.version}</ver>\r
+                                      <timestamp>${maven.build.timestamp}</timestamp>\r
+                                  </properties>\r
+                                  <source>\r
+                                      println 'ver: ' + project.properties['ver'];\r
+                                      if ( project.properties['ver'].endsWith("-SNAPSHOT") ) {\r
+                                          project.properties['dockertag1']=project.properties['ver'] + "-latest";\r
+                                          project.properties['dockertag2']=project.properties['ver'] + "-" + project.properties['timestamp'];\r
+                                      } else {\r
+                                          project.properties['dockertag1']=project.properties['ver'] + "-STAGING-latest";\r
+                                          project.properties['dockertag2']=project.properties['ver'] + "-STAGING-" + project.properties['timestamp'];\r
+                                      }\r
+                                      println 'docker tag 1: ' + project.properties['dockertag1'];\r
+                                      println 'docker tag 2: ' + project.properties['dockertag2'];\r
+                                  </source>\r
+                              </configuration>\r
+                          </execution>\r
+                      </executions>\r
+                    </plugin>\r
+                    <plugin>\r
+                        <groupId>io.fabric8</groupId>\r
+                        <artifactId>docker-maven-plugin</artifactId>\r
+                        <version>0.28.0</version>\r
+                        <configuration>\r
+                            <verbose>${docker.verbose}</verbose>\r
+                            <apiVersion>${docker.apiVersion}</apiVersion>\r
+                            <pullRegistry>${docker.pull.registry}</pullRegistry>\r
+                            <pushRegistry>${docker.push.registry}</pushRegistry>\r
+                            <images>\r
+                                <image>\r
+                                    <name>${datarouter.prov.image.name}</name>\r
+                                    <build>\r
+                                        <cleanup>try</cleanup>\r
+                                        <dockerFileDir>${basedir}/target/docker-stage</dockerFileDir>\r
+                                        <dockerFile>Dockerfile</dockerFile>\r
+                                        <tags>\r
+                                            <tag>${dockertag1}</tag>\r
+                                            <tag>${dockertag2}</tag>\r
+                                        </tags>\r
+                                    </build>\r
+                                </image>\r
+                            </images>\r
+                        </configuration>\r
+                         <executions>\r
+                             <execution>\r
+                                 <id>generate-images</id>\r
+                                 <phase>install</phase>\r
+                                 <goals>\r
+                                     <goal>build</goal>\r
+                                 </goals>\r
+                             </execution>\r
+                             <execution>\r
+                                 <id>push-images</id>\r
+                                 <phase>deploy</phase>\r
+                                 <goals>\r
+                                     <goal>push</goal>\r
+                                 </goals>\r
+                             </execution>\r
+                         </executions>\r
+                    </plugin>\r
+                </plugins>\r
+            </build>\r
         </profile>\r
     </profiles>\r
-\r
     <build>\r
         <finalName>datarouter-prov</finalName>\r
         <resources>\r
                 <directory>src/main/resources</directory>\r
                 <filtering>true</filtering>\r
                 <includes>\r
-                    <include>**/proserver.properties</include>\r
+                    <include>**/provserver.properties</include>\r
                 </includes>\r
             </resource>\r
             <resource>\r
                     <include>**/log4j.properties</include>\r
                 </includes>\r
             </resource>\r
-            <!-- <resource><directory>src/main/config</directory><filtering>true</filtering><includes><include>**/log4j*.xml</include></includes></resource><resource><directory>src/main/resources</directory><filtering>false</filtering><excludes><exclude>**/cambriaApiVersion.properties</exclude></excludes></resource>-->\r
+            <resource>\r
+                <directory>src/test/resources</directory>\r
+                <filtering>true</filtering>\r
+                <includes>\r
+                    <include>**/log4j.properties</include>\r
+                </includes>\r
+            </resource>\r
         </resources>\r
         <plugins>\r
             <plugin>\r
                     <descriptorRefs>\r
                         <descriptorRef>jar-with-dependencies</descriptorRef>\r
                     </descriptorRefs>\r
-                    <outputDirectory>${basedir}/target/opt/app/datartr/lib</outputDirectory>\r
+                    <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/lib</outputDirectory>\r
                     <archive>\r
                         <manifest>\r
                             <addClasspath>true</addClasspath>\r
                 </configuration>\r
                 <version>3.6.0</version>\r
             </plugin>\r
-            <plugin>\r
-                <groupId>com.spotify</groupId>\r
-                <artifactId>docker-maven-plugin</artifactId>\r
-                <version>${docker.maven.plugin.version}</version>\r
-                <configuration>\r
-                    <skipDockerBuild>false</skipDockerBuild>\r
-                    <imageName>${datarouter.prov.image.name}</imageName>\r
-                    <dockerDirectory>${docker.location}</dockerDirectory>\r
-                    <serverId>docker-hub</serverId>\r
-                    <imageTags>\r
-                        <imageTag>${project.version}</imageTag>\r
-                        <imageTag>latest</imageTag>\r
-                    </imageTags>\r
-                    <forceTags>true</forceTags>\r
-                    <resources>\r
-                        <resource>\r
-                            <targetPath>/</targetPath>\r
-                            <directory>${docker.location}</directory>\r
-                            <include>${project.build.finalName}.jar</include>\r
-                        </resource>\r
-                        <resource>\r
-                            <targetPath>/</targetPath>\r
-                            <directory>${project.build.directory}</directory>\r
-                            <include>**/**</include>\r
-                        </resource>\r
-                    </resources>\r
-                </configuration>\r
-                <executions>\r
-                    <execution>\r
-                        <id>build-image</id>\r
-                        <phase>install</phase>\r
-                        <goals>\r
-                            <goal>build</goal>\r
-                        </goals>\r
-                        <configuration>\r
-                            <skipDockerBuild>${skip.docker.build}</skipDockerBuild>\r
-                        </configuration>\r
-                    </execution>\r
-                    <execution>\r
-                        <id>tag-image-project-version</id>\r
-                        <phase>install</phase>\r
-                        <goals>\r
-                            <goal>tag</goal>\r
-                        </goals>\r
-                        <configuration>\r
-                            <image>${datarouter.prov.image.name}</image>\r
-                            <newName>${onap.nexus.dockerregistry.daily}/${datarouter.prov.image.name}:${project.version}</newName>\r
-                            <skipDockerTag>${skip.docker.push}</skipDockerTag>\r
-                        </configuration>\r
-                    </execution>\r
-                    <execution>\r
-                        <id>tag-image-latest</id>\r
-                        <phase>install</phase>\r
-                        <goals>\r
-                            <goal>tag</goal>\r
-                        </goals>\r
-                        <configuration>\r
-                            <image>${datarouter.prov.image.name}</image>\r
-                            <newName>${onap.nexus.dockerregistry.daily}/${datarouter.prov.image.name}:latest</newName>\r
-                            <skipDockerTag>${skip.docker.push}</skipDockerTag>\r
-                        </configuration>\r
-                    </execution>\r
-                    <execution>\r
-                        <id>push-image-latest</id>\r
-                        <phase>deploy</phase>\r
-                        <goals>\r
-                            <goal>push</goal>\r
-                        </goals>\r
-                        <configuration>\r
-                            <imageName>${onap.nexus.dockerregistry.daily}/${datarouter.prov.image.name}:${project.version}</imageName>\r
-                            <skipDockerPush>${skip.docker.push}</skipDockerPush>\r
-                        </configuration>\r
-                    </execution>\r
-                    <execution>\r
-                        <id>push-image</id>\r
-                        <phase>deploy</phase>\r
-                        <goals>\r
-                            <goal>push</goal>\r
-                        </goals>\r
-                        <configuration>\r
-                            <imageName>${onap.nexus.dockerregistry.daily}/${datarouter.prov.image.name}:latest</imageName>\r
-                            <skipDockerPush>${skip.docker.push}</skipDockerPush>\r
-                        </configuration>\r
-                    </execution>\r
-                </executions>\r
-            </plugin>\r
+\r
+            <!-- Copy files to docker-stage to be included in image -->\r
             <plugin>\r
                 <artifactId>maven-resources-plugin</artifactId>\r
                 <version>2.7</version>\r
                 <executions>\r
                     <execution>\r
-                        <id>copy-docker-file</id>\r
-                        <phase>package</phase>\r
+                        <id>copy-dockerfile</id>\r
+                        <phase>validate</phase>\r
                         <goals>\r
                             <goal>copy-resources</goal>\r
                         </goals>\r
                         <configuration>\r
-                            <outputDirectory>${docker.location}</outputDirectory>\r
+                            <outputDirectory>${basedir}/target/docker-stage</outputDirectory>\r
                             <overwrite>true</overwrite>\r
                             <resources>\r
                                 <resource>\r
                                     <directory>${basedir}/src/main/resources/docker</directory>\r
                                     <filtering>true</filtering>\r
                                     <includes>\r
-                                        <include>**/*</include>\r
+                                        <include>Dockerfile</include>\r
                                     </includes>\r
                                 </resource>\r
                             </resources>\r
                         </configuration>\r
                     </execution>\r
                     <execution>\r
-                        <id>copy-resources-1</id>\r
+                        <id>copy-startup-script</id>\r
                         <phase>validate</phase>\r
                         <goals>\r
                             <goal>copy-resources</goal>\r
                         </goals>\r
                         <configuration>\r
-                            <outputDirectory>${basedir}/target/opt/app/datartr/lib</outputDirectory>\r
+                            <outputDirectory>${basedir}/target/docker-stage/opt</outputDirectory>\r
+                            <overwrite>true</overwrite>\r
                             <resources>\r
                                 <resource>\r
-                                    <directory>${project.basedir}/src/main/resources</directory>\r
+                                    <directory>${basedir}/src/main/resources/docker</directory>\r
+                                    <filtering>true</filtering>\r
                                     <includes>\r
-                                        <include>**/*.jar</include>\r
+                                        <include>startup.sh</include>\r
                                     </includes>\r
                                 </resource>\r
                             </resources>\r
                             <goal>copy-resources</goal>\r
                         </goals>\r
                         <configuration>\r
-                            <outputDirectory>${basedir}/target/opt/app/datartr/etc</outputDirectory>\r
+                            <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/etc</outputDirectory>\r
                             <resources>\r
                                 <resource>\r
                                     <directory>${basedir}/src/main/resources</directory>\r
                             <goal>copy-resources</goal>\r
                         </goals>\r
                         <configuration>\r
-                            <outputDirectory>${basedir}/target/opt/app/datartr</outputDirectory>\r
+                            <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr</outputDirectory>\r
                             <resources>\r
                                 <resource>\r
                                     <directory>${basedir}/data</directory>\r
                             <goal>copy-resources</goal>\r
                         </goals>\r
                         <configuration>\r
-                            <outputDirectory>${basedir}/target/opt/app/datartr/self_signed</outputDirectory>\r
+                            <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/aaf_certs</outputDirectory>\r
                             <resources>\r
                                 <resource>\r
-                                    <directory>${basedir}/self_signed</directory>\r
+                                    <directory>${basedir}/aaf_certs</directory>\r
                                     <includes>\r
                                         <include>misc/**</include>\r
                                         <include>**/**</include>\r
                             <goal>copy-dependencies</goal>\r
                         </goals>\r
                         <configuration>\r
-                            <outputDirectory>${project.build.directory}/opt/app/datartr/lib</outputDirectory>\r
+                            <outputDirectory>${basedir}/target/docker-stage/opt/app/datartr/aaf_certs</outputDirectory>\r
                             <overWriteReleases>false</overWriteReleases>\r
                             <overWriteSnapshots>false</overWriteSnapshots>\r
                             <overWriteIfNewer>true</overWriteIfNewer>\r
                 <version>1.6.7</version>\r
                 <extensions>true</extensions>\r
                 <configuration>\r
-                    <nexusUrl>${onap.nexus.dockerregistry.daily}</nexusUrl>\r
+                    <nexusUrl>${onap.nexus.url}</nexusUrl>\r
                     <stagingProfileId>176c31dfe190a</stagingProfileId>\r
                     <serverId>ecomp-staging</serverId>\r
                 </configuration>\r
             </plugin>\r
         </plugins>\r
     </build>\r
-    <distributionManagement>\r
-        <repository>\r
-            <id>ecomp-releases</id>\r
-            <name>DR Release Repository</name>\r
-            <url>${onap.nexus.url}${releaseNexusPath}</url>\r
-        </repository>\r
-        <snapshotRepository>\r
-            <id>ecomp-snapshots</id>\r
-            <name>DR Snapshot Repository</name>\r
-            <url>${onap.nexus.url}${snapshotNexusPath}</url>\r
-        </snapshotRepository>\r
-        <site>\r
-            <id>ecomp-site</id>\r
-            <url>dav:${onap.nexus.url}${sitePath}</url>\r
-        </site>\r
-    </distributionManagement>\r
-    <pluginRepositories>\r
-        <pluginRepository>\r
-            <id>onap-plugin-snapshots</id>\r
-            <url>${onap.nexus.url}${snapshotNexusPath}</url>\r
-        </pluginRepository>\r
-    </pluginRepositories>\r
 </project>\r