maven Packaging zip contains the complete code of the startup script under bin
- 2021-12-04 18:51:24
- OfStack
maven Packaging zip contains the startup script under bin, which is tested on idea by this site:
pom. xml Packaging
<build>
<sourceDirectory>src/main/scala</sourceDirectory>
<testSourceDirectory>src/test/scala</testSourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<!-- Exclude external configuration files (on runtime comments, make IDE Can read the configuration file; When packaging, let go of comments to make the configuration file external, which is convenient for modification.) You can not configure, maven-jar-plugin The following is configured -->
<!--<excludes>
<exclude>config.properties</exclude>
</excludes>-->
</resource>
<!-- Resources outside the configuration file (stored in the conf Directory, too classpath Path, which will be configured below) -->
<!--<resource>
<directory>src/main/resources</directory>
<includes>
<include>config.properties</include>
</includes>
<targetPath>${project.build.directory}/conf</targetPath>
</resource>-->
</resources>
<plugins>
<!--scala Compile and package plug-ins -->
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.2.1</version>
<executions>
<execution>
<id>scala-compile-first</id>
<phase>process-resources</phase>
<goals>
<goal>add-source</goal>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
<!--java Compile and package plug-ins -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
<!--
③ Beat into 1 A zip Package, when publishing the project, will zip Bag copy To the server, directly unzip xxx.zip Which contains the jar And dependent on lib , and configurable config File, you can start the service directly
-->
<!--The configuration of maven-jar-plugin-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<!--The configuration of the plugin-->
<configuration>
<!-- Do not package resource files (configuration files and dependency packages are separated) -->
<excludes>
<exclude>*.properties</exclude>
<exclude>*.xml</exclude>
<exclude>*.txt</exclude>
</excludes>
<!--Configuration of the archiver-->
<archive>
<!-- Generated jar Do not include pom.xml And pom.properties These two files -->
<addMavenDescriptor>false</addMavenDescriptor>
<!--Manifest specific configuration-->
<manifest>
<!-- Whether to put the first 3 Square jar Put manifest Adj. classpath Medium -->
<addClasspath>true</addClasspath>
<!-- Generated manifest Medium classpath The prefix of, because it is necessary to put the first 3 Square jar Put lib Directory, so classpath The prefix of is lib/-->
<classpathPrefix>lib/</classpathPrefix>
<!-- Applied main class-->
<mainClass>com.swordfall.restserver.base.WebServer</mainClass>
</manifest>
<!-- Add key-value pairs to the manifest file and add classpath Path, where the conf Directory is also set to classpath Path -->
<manifestEntries>
<Class-Path>conf/</Class-Path>
</manifestEntries>
</archive>
<!-- Filter out unwanted inclusion in jar Files in -->
<!-- <excludes>
<exclude>${project.basedir}/xml/*</exclude>
</excludes>-->
</configuration>
</plugin>
<!--The configuration of maven-assembly-plugin-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<!--The configuration of the plugin-->
<configuration>
<!--Specifies the configuration file of the assembly plugin-->
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
assembly. xml Packaging zip Settings
assembly.xml
<assembly>
<id>bin</id>
<includeBaseDirectory>false</includeBaseDirectory>
<!-- Finally packaged into 1 Object for publishing zip Documents -->
<formats>
<format>zip</format>
</formats>
<!-- Adds dependencies to zip package under lib directory -->
<dependencySets>
<dependencySet>
<!-- That does not use the project artifact , No. 3 Square jar Don't decompress, pack it into zip Documentary lib Directory -->
<useProjectArtifact>false</useProjectArtifact>
<outputDirectory>lib</outputDirectory>
<unpack>false</unpack>
</dependencySet>
</dependencySets>
<fileSets>
<!-- Package the project-related description documents into zip Root directory of file -->
<!--<fileSet>
<directory>${project.basedir}</directory>
<outputDirectory>/</outputDirectory>
</fileSet>-->
<!-- Package the configuration file of the project into zip Documentary config Directory -->
<!--<fileSet>-->
<!--<directory>${project.basedir}/src/main/resources</directory>-->
<!--<outputDirectory>/conf</outputDirectory>-->
<!--<includes>-->
<!--<include>*.xml</include>-->
<!--<include>*.properties</include>-->
<!--</includes>-->
<!--</fileSet>-->
<!-- Compile the project itself jar Files, packed into zip Root directory of file -->
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
<!-- Put the script file directory of the project (src/main/scripts) The startup script in, packaged into zip Root directory of file -->
<fileSet>
<directory>${project.basedir}/src/main/bin</directory>
<outputDirectory>bin</outputDirectory>
<includes>
<include>*.sh</include>
</includes>
</fileSet>
</fileSets>
</assembly>
ps: Let's see maven typing zip package and containing bin and docs folders
maven plug-in:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>src/main/resources/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
assembly.xml
<assembly>
<id>package</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.parent.basedir}/bin</directory>
<outputDirectory>\bin</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.parent.basedir}/db</directory>
<outputDirectory>\db</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.parent.basedir}/docs</directory>
<outputDirectory>\docs</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.parent.basedir}</directory>
<outputDirectory>\</outputDirectory>
<includes>
<include>readme.md</include>
<include>release-notes</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>\</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>