MINIFI-508 Providing a profile, active by default, to download/use the Commons Daemon for running MiNiFi as a Windows Service. Those that wish to exclude these dependencies can use the default-assembly profile to not require external resources.
diff --git a/minifi-assembly/pom.xml b/minifi-assembly/pom.xml
index 778e350..cc90adc 100644
--- a/minifi-assembly/pom.xml
+++ b/minifi-assembly/pom.xml
@@ -25,7 +25,21 @@
<artifactId>minifi-assembly</artifactId>
<packaging>pom</packaging>
<description>This is the assembly of Apache NiFi - MiNiFi</description>
+
<build>
+
+ <pluginManagement>
+ <plugins>
+ <!--
+ Override the version of the plugin provided by the Apache parent pom as prior versions lead to an NPE
+ -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>3.1.1</version>
+ </plugin>
+ </plugins>
+ </pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
@@ -50,81 +64,9 @@
<scmBranchPropertyName>buildBranch</scmBranchPropertyName>
</configuration>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- <dependencies>
- <dependency>
- <groupId>ant-contrib</groupId>
- <artifactId>ant-contrib</artifactId>
- <version>20020829</version>
- </dependency>
- </dependencies>
- <executions>
- <execution>
- <id>download-commons-daemon</id>
- <phase>prepare-package</phase>
- <goals>
- <goal>run</goal>
- </goals>
- <configuration>
- <target>
- <taskdef resource="net/sf/antcontrib/antcontrib.properties" />
- <if>
- <available file="${basedir}/target/minifiw.exe" />
- <then>
- <echo message="Skipping download of commons-daemon." />
- </then>
- <else>
- <echo message="Downloading Commons Daemon Windows binaries." />
- <property name="commons.daemon.file" value="commons-daemon-${commons.daemon.version}-bin-windows.zip"/>
- <get src="https://apache.claz.org/commons/daemon/binaries/windows/${commons.daemon.file}" dest="${java.io.tmpdir}/${commons.daemon.file}" skipexisting="true"/>
- <local name="checksum.matches"/>
- <checksum file="${java.io.tmpdir}/${commons.daemon.file}" algorithm="SHA-512" property="${commons.daemon.sha512sum}" verifyProperty="checksum.matches"/>
- <echo message="Checksum match = ${checksum.matches}"/>
- <condition property="checksum.matches.fail">
- <equals arg1="${checksum.matches}" arg2="false" />
- </condition>
- <fail if="checksum.matches.fail">Checksum error</fail>
- <unzip src="${java.io.tmpdir}/${commons.daemon.file}" dest="${java.io.tmpdir}" />
- <copy file="${java.io.tmpdir}/prunmgr.exe" tofile="${basedir}/target/minifiw.exe" />
- <copy file="${java.io.tmpdir}/amd64/prunsrv.exe" tofile="${basedir}/target/minifi.exe" />
- </else>
- </if>
- </target>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <finalName>minifi-${project.version}</finalName>
- <attach>false</attach>
- </configuration>
- <executions>
- <execution>
- <id>make shared resource</id>
- <goals>
- <goal>single</goal>
- </goals>
- <phase>package</phase>
- <configuration>
- <archiverConfig>
- <defaultDirectoryMode>0775</defaultDirectoryMode>
- <directoryMode>0775</directoryMode>
- <fileMode>0664</fileMode>
- </archiverConfig>
- <descriptors>
- <descriptor>src/main/assembly/dependencies.xml</descriptor>
- </descriptors>
- <tarLongFileMode>posix</tarLongFileMode>
- </configuration>
- </execution>
- </executions>
- </plugin>
</plugins>
</build>
+
<dependencies>
<!-- Logging -->
<dependency>
@@ -341,4 +283,130 @@
<commons.daemon.sha512sum>62777d2424361162736b4a9b39b9fb4155760d4d7c4a3489fe1868e0912158ae126ef5f42abbd1bcca1dbf5aa6204d8d0029be7c49f222293d6e1421a5173dd7</commons.daemon.sha512sum>
</properties>
+ <profiles>
+ <profile>
+ <id>default-assembly</id>
+ <activation>
+ <activeByDefault>false</activeByDefault>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <finalName>minifi-${project.version}</finalName>
+ <attach>false</attach>
+ </configuration>
+ <executions>
+ <execution>
+ <id>make shared resource</id>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <archiverConfig>
+ <defaultDirectoryMode>0775</defaultDirectoryMode>
+ <directoryMode>0775</directoryMode>
+ <fileMode>0664</fileMode>
+ </archiverConfig>
+ <descriptors>
+ <descriptor>src/main/assembly/dependencies.xml</descriptor>
+ </descriptors>
+ <tarLongFileMode>posix</tarLongFileMode>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>windows-service-assembly</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ <property>
+ <name>!default-assembly</name>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <dependencies>
+ <dependency>
+ <groupId>ant-contrib</groupId>
+ <artifactId>ant-contrib</artifactId>
+ <version>20020829</version>
+ </dependency>
+ </dependencies>
+ <executions>
+ <execution>
+ <id>download-commons-daemon</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <target>
+ <taskdef resource="net/sf/antcontrib/antcontrib.properties" />
+ <if>
+ <available file="${basedir}/target/minifiw.exe" />
+ <then>
+ <echo message="Skipping download of commons-daemon." />
+ </then>
+ <else>
+ <echo message="Downloading Commons Daemon Windows binaries." />
+ <property name="commons.daemon.file" value="commons-daemon-${commons.daemon.version}-bin-windows.zip"/>
+ <get src="https://apache.claz.org/commons/daemon/binaries/windows/${commons.daemon.file}" dest="${java.io.tmpdir}/${commons.daemon.file}" skipexisting="true"/>
+ <local name="checksum.matches"/>
+ <checksum file="${java.io.tmpdir}/${commons.daemon.file}" algorithm="SHA-512" property="${commons.daemon.sha512sum}" verifyProperty="checksum.matches"/>
+ <echo message="Checksum match = ${checksum.matches}"/>
+ <condition property="checksum.matches.fail">
+ <equals arg1="${checksum.matches}" arg2="false" />
+ </condition>
+ <fail if="checksum.matches.fail">Checksum error</fail>
+ <unzip src="${java.io.tmpdir}/${commons.daemon.file}" dest="${java.io.tmpdir}" />
+ <copy file="${java.io.tmpdir}/prunmgr.exe" tofile="${basedir}/target/minifiw.exe" />
+ <copy file="${java.io.tmpdir}/amd64/prunsrv.exe" tofile="${basedir}/target/minifi.exe" />
+ </else>
+ </if>
+ </target>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <finalName>minifi-${project.version}</finalName>
+ <attach>false</attach>
+ </configuration>
+ <executions>
+ <execution>
+ <id>make shared resource</id>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <phase>package</phase>
+ <configuration>
+ <archiverConfig>
+ <defaultDirectoryMode>0775</defaultDirectoryMode>
+ <directoryMode>0775</directoryMode>
+ <fileMode>0664</fileMode>
+ </archiverConfig>
+ <descriptors>
+ <descriptor>src/main/assembly/dependencies-windows-service.xml</descriptor>
+ </descriptors>
+ <tarLongFileMode>posix</tarLongFileMode>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
diff --git a/minifi-assembly/src/main/assembly/dependencies-windows-service.xml b/minifi-assembly/src/main/assembly/dependencies-windows-service.xml
new file mode 100644
index 0000000..6ae5411
--- /dev/null
+++ b/minifi-assembly/src/main/assembly/dependencies-windows-service.xml
@@ -0,0 +1,178 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<assembly>
+ <id>bin</id>
+ <formats>
+ <format>dir</format>
+ <format>zip</format>
+ <format>tar.gz</format>
+ </formats>
+ <includeBaseDirectory>true</includeBaseDirectory>
+ <baseDirectory>minifi-${project.version}</baseDirectory>
+
+ <dependencySets>
+ <!-- Write out all dependency artifacts to lib directory -->
+ <dependencySet>
+ <scope>runtime</scope>
+ <useProjectArtifact>false</useProjectArtifact>
+ <outputDirectory>lib</outputDirectory>
+ <directoryMode>0770</directoryMode>
+ <fileMode>0660</fileMode>
+ <useTransitiveFiltering>true</useTransitiveFiltering>
+ <excludes>
+ <exclude>minifi-bootstrap</exclude>
+ <exclude>minifi-resources</exclude>
+ <!-- Filter items introduced via transitive dependencies that are provided in associated NARs -->
+ <exclude>spring-aop</exclude>
+ <exclude>spring-context</exclude>
+ <exclude>spring-beans</exclude>
+ <exclude>swagger-annotations</exclude>
+ <exclude>aspectjweaver</exclude>
+ <exclude>h2</exclude>
+ <exclude>jaxb-impl</exclude>
+ <exclude>mail</exclude>
+ <exclude>log4j</exclude>
+ <exclude>lucene-queryparser</exclude>
+ <exclude>commons-net</exclude>
+ <exclude>spring-context</exclude>
+ <exclude>spring-security-core</exclude>
+ </excludes>
+ </dependencySet>
+
+ <!-- Write out the bootstrap lib component to its own dir -->
+ <dependencySet>
+ <scope>runtime</scope>
+ <useProjectArtifact>false</useProjectArtifact>
+ <outputDirectory>lib/bootstrap</outputDirectory>
+ <directoryMode>0770</directoryMode>
+ <fileMode>0660</fileMode>
+ <useTransitiveFiltering>true</useTransitiveFiltering>
+ <includes>
+ <include>minifi-bootstrap</include>
+ <include>minifi-utils</include>
+ <include>nifi-utils</include>
+ <include>commons-io</include>
+ </includes>
+ </dependencySet>
+
+ <!-- Write out the conf directory contents -->
+ <dependencySet>
+ <scope>runtime</scope>
+ <useProjectArtifact>false</useProjectArtifact>
+ <outputDirectory>./</outputDirectory>
+ <directoryMode>0770</directoryMode>
+ <fileMode>0664</fileMode>
+ <useTransitiveFiltering>true</useTransitiveFiltering>
+ <includes>
+ <include>minifi-resources</include>
+ </includes>
+ <unpack>true</unpack>
+ <unpackOptions>
+ <filtered>true</filtered>
+ <includes>
+ <include>conf/*</include>
+ </includes>
+ <excludes>
+ <exclude>conf/authority-providers.xml</exclude>
+ <exclude>conf/authorized-users.xml</exclude>
+ <exclude>conf/identity-providers.xml</exclude>
+ <exclude>conf/zookeeper.properties</exclude>
+ </excludes>
+ </unpackOptions>
+ </dependencySet>
+
+ <!-- Write out the bin directory contents -->
+ <dependencySet>
+ <scope>runtime</scope>
+ <useProjectArtifact>false</useProjectArtifact>
+ <outputDirectory>./</outputDirectory>
+ <directoryMode>0770</directoryMode>
+ <fileMode>0770</fileMode>
+ <useTransitiveFiltering>true</useTransitiveFiltering>
+ <includes>
+ <include>minifi-resources</include>
+ </includes>
+ <unpack>true</unpack>
+ <unpackOptions>
+ <filtered>false</filtered>
+ <includes>
+ <include>bin/*</include>
+ </includes>
+ </unpackOptions>
+ </dependencySet>
+
+ <!-- Write out docs directory contents -->
+ <dependencySet>
+ <scope>runtime</scope>
+ <useProjectArtifact>false</useProjectArtifact>
+ <outputDirectory>docs/</outputDirectory>
+ <useTransitiveFiltering>true</useTransitiveFiltering>
+ <includes>
+ <include>minifi-docs</include>
+ </includes>
+ <unpack>true</unpack>
+ <unpackOptions>
+ <filtered>false</filtered>
+ <excludes>
+ <!-- LICENSE and NOTICE both covered by top-level -->
+ <exclude>LICENSE</exclude>
+ <exclude>NOTICE</exclude>
+ </excludes>
+ </unpackOptions>
+ </dependencySet>
+ </dependencySets>
+ <files>
+ <file>
+ <source>src/main/resources/build.properties.template</source>
+ <outputDirectory>./</outputDirectory>
+ <destName>build.properties</destName>
+ <fileMode>0444</fileMode>
+ <filtered>true</filtered>
+ </file>
+ <file>
+ <source>./target/minifi.exe</source>
+ <outputDirectory>./bin</outputDirectory>
+ <filtered>false</filtered>
+ </file>
+ <file>
+ <source>./target/minifiw.exe</source>
+ <outputDirectory>./bin</outputDirectory>
+ <filtered>false</filtered>
+ </file>
+
+ <file>
+ <source>./README.md</source>
+ <outputDirectory>./</outputDirectory>
+ <destName>README</destName>
+ <fileMode>0644</fileMode>
+ <filtered>true</filtered>
+ </file>
+ <file>
+ <source>./LICENSE</source>
+ <outputDirectory>./</outputDirectory>
+ <destName>LICENSE</destName>
+ <fileMode>0644</fileMode>
+ <filtered>true</filtered>
+ </file>
+ <file>
+ <source>./NOTICE</source>
+ <outputDirectory>./</outputDirectory>
+ <destName>NOTICE</destName>
+ <fileMode>0644</fileMode>
+ <filtered>true</filtered>
+ </file>
+ </files>
+</assembly>
diff --git a/minifi-assembly/src/main/assembly/dependencies.xml b/minifi-assembly/src/main/assembly/dependencies.xml
index 6ae5411..dd4b46a 100644
--- a/minifi-assembly/src/main/assembly/dependencies.xml
+++ b/minifi-assembly/src/main/assembly/dependencies.xml
@@ -142,16 +142,6 @@
<fileMode>0444</fileMode>
<filtered>true</filtered>
</file>
- <file>
- <source>./target/minifi.exe</source>
- <outputDirectory>./bin</outputDirectory>
- <filtered>false</filtered>
- </file>
- <file>
- <source>./target/minifiw.exe</source>
- <outputDirectory>./bin</outputDirectory>
- <filtered>false</filtered>
- </file>
<file>
<source>./README.md</source>
diff --git a/pom.xml b/pom.xml
index 32b9582..21a1e5e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1189,7 +1189,6 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
- <version>2.5.2</version>
<configuration>
<tarLongFileMode>gnu</tarLongFileMode>
</configuration>