直接使用maven的插件打包的話, 打出來一個jar, 會非常大, 有時候在服務上傳的時候會非常不方便,
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 指定SpringBoot程序的main函數入口類 -->
<mainClass>com.letv.bigdata.idfa.Main</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
因此需要打出來的jar包不帶以來, 依賴防止在lib目錄下, 配置文件放在config目錄下
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<mainClass>com.letv.bigdata.idfa.Main</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>../libs/</classpathPrefix>
</manifest>
<manifestEntries>
<!--<Class-Path>./</Class-Path>-->
<Class-Path>../config</Class-Path>
</manifestEntries>
</archive>
<excludes>
<exclude>application*.yml</exclude> //指定打包時要排除的文件,支持正則
</excludes>
</configuration>
</plugin>
<!--拷貝依賴jar到指定的目錄-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<!--<version>2.2</version>-->
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.basedir}/libs</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<descriptors>
<descriptor>${project.basedir}/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-package</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
使用的assembly放在項目根目錄下, 和src一個級別
aseembly.xml
<?xml version="1.0" encoding="UTF-8"?> <assembly> <!-- 最終生成的包名稱為artifactId-version-id.format, id主要用來區分包是由哪個assembly文件生成的,本例中 artifactId:test version:1.0.0 id:bin format:tar.gz 最終將會在target文件夾下生成一個名為test-1.0.0-bin.tar.gz的包 --> <id>bin</id> <!-- zip, tar, tar.gz, tar.bz2, jar, dir, war 也是支持的 --> <formats> <!-- 可以同時打多種格式的包 --> <format>tar.gz</format> <!-- <format>zip</format> --> </formats> <!-- 默認值是true,此時將創建一個名為artifactId-version的根文件夾, 所有outputDirectory標簽指定的路徑將變為相對於該文件夾的路徑。 例如:outputDirectoryS的值為/test,則最終徑為/artifactId-version/test 如果includeBaseDirectory的值是false,則最終路徑為/test --> <includeBaseDirectory>true</includeBaseDirectory> <dependencySets> <dependencySet> <!-- true是默認值,本次構建出來的jar包屬於當前這個dependencySet, 此時jar包將會被添加至新的tar.gz包中 --> <useProjectArtifact>true</useProjectArtifact> <outputDirectory>/libs</outputDirectory> <unpack>false</unpack> </dependencySet> </dependencySets> <fileSets> <!-- 如果存在fileSet標簽,並且在標簽中沒有使用includes標簽指定打入包中的文件, 默認情況下,工程中的所有文件(源文件、編譯后產生的.class文件、配置文件等) 都會被打入包中 --> <fileSet> <directory>${project.basedir}/src/main/resources</directory> <outputDirectory>/config</outputDirectory> <includes> <include>**/*.*</include> </includes> </fileSet> <!-- <fileSet> <directory>${project.basedir}/dic</directory> <outputDirectory>/dic</outputDirectory> <includes> <include>*</include> </includes> </fileSet> --> <fileSet> <directory>${project.basedir}/script</directory> <outputDirectory>/bin</outputDirectory> <includes> <include>*</include> </includes> </fileSet> <fileSet> <directory>${project.basedir}/logs</directory> <outputDirectory>/logs</outputDirectory> <includes> <include>*</include> </includes> </fileSet> </fileSets> </assembly>
這樣打出來的是tar.gz包, 執行腳本放在bin目錄下(http://www.cnblogs.com/wenbronk/p/9021542.html), conf目錄下放application.yml文件等, lib目錄下放所有的jar包
