天天看點

pom控制java項目的打包方式

maven在項目管理中有着重要的作用

有的時候我們需要将編寫好的程式進行打包,并部署到環境上,有時可以使用java -cp并指定main函數的 的方式直接啟動,

這樣的功能在maven可以直接配置化控制,

這裡隻一個pom檔案的例子,控制了對導出jar包的導出路徑,jar包名稱,主函數,依賴包的配置

并且一次可以導出多個jar包(指定不同的配置)

<project xmlns="http:maven.apache.org/POM/4.0.0" xmlns:xsi="http:www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http:maven.apache.org/POM/4.0.0 http:maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<!-- 本項目的分組、名稱、版本控制 -->

<groupId>maven.test</groupId>

<artifactId>mytest</artifactId>

<version>0.0.1-SNAPSHOT</version>

<!-- 全局屬性配置 設定編碼為 utf8 -->

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>

<!-- 項目中的所需的額外依賴清單。 -->

<dependencies>

<!-- 項目中依賴1。 -->

<!-- log4j 2 -->

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-core</artifactId>

<version>2.2</version>

</dependency>

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-api</artifactId>

<version>2.2</version>

</dependency>

<dependency>

<groupId>net.sf.json-lib</groupId>

<artifactId>json-lib</artifactId>

<version>2.4</version>

<classifier>jdk15</classifier>

</dependency>

</dependencies>

<!-- ************************************************************************************************* -->

<!-- 項目建構打包的配置 -->

<build>

<plugins>

<!-- 第一個插件 -->

<!-- 編譯插件 -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<configuration>

<source>1.6</source>

<target>1.6</target>

<encoding>UTF-8</encoding>

</configuration>

</plugin>

<!-- 第二個插件 -->

<!-- 打包插件 -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-jar-plugin</artifactId>

<version>2.3.1</version>

<!-- 控制打出的包 這裡可以一次打出多個包,并指定main函數,和依賴的jar包路徑 -->

<executions>

<!-- 指定生成第一個jar包的配置 -->

<execution>

<id>jar1</id>

<phase>compile</phase>

<goals>

<goal>jar</goal>

</goals>

<configuration>

<!-- 打包輸出路徑 -->

<outputDirectory>${basedir}/target/jar</outputDirectory>

<!-- 設定輸出的jar包的檔案名 -->

<finalName>hello</finalName>

<archive>

<!-- 定義jar包的主函數 -->

<manifest>

<mainClass>com.service.MainService</mainClass>

</manifest>

<!-- 指定依賴包的配置,不寫就不指定 -->

</archive>

<!-- 打包去除掉的檔案 -->

<excludes>

<exclude>config/**</exclude>

<exclude>config_offline/**</exclude>

<exclude>config_online/**</exclude>

</excludes>

</configuration>

</execution>

<!-- 指定生成第一個jar包的配置 -->

<execution>

<id>jar2</id>

<goals>

<goal>jar</goal>

</goals>

<phase>package</phase>

<configuration>

<!-- 打包輸出路徑 -->

<outputDirectory>${basedir}/target/jar</outputDirectory>

<!-- 設定輸出的jar包的檔案名 -->

<finalName>log</finalName>

<archive>

<!-- 定義jar包的主函數 -->

<manifest>

<mainClass>com.service.MainService</mainClass>

</manifest>

<!-- 指定依賴包的配置(就不用使用java -cp 的方式來添加依賴了) -->

<manifestEntries>

<Class-Path>

./lib/commons-beanutils-1.8.0.jar

./lib/commons-collections-3.2.1.jar

./lib/commons-lang-2.5.jar

./lib/commons-logging-1.1.1.jar

./lib/ezmorph-1.0.6.jar

./lib/json-lib-2.4-jdk15.jar

./lib/log4j-api-2.2.jar

./lib/log4j-core-2.2.jar

</Class-Path>

</manifestEntries>

</archive>

</configuration>

</execution>

</executions>

</plugin>

<!-- 第三個插件 -->

<!-- 依賴插件 控制依賴包的插件 -->

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-dependency-plugin</artifactId>

<!-- 設定插件的執行方式 -->

<executions>

<execution>

<id>copy-dependencies</id>

<phase>package</phase>

<goals>

<goal>copy-dependencies</goal>

</goals>

<!-- 依賴包的輸出路徑 -->

<configuration>

<outputDirectory>${basedir}/target/jar/lib</outputDirectory>

<overWriteReleases>true</overWriteReleases>

<overWriteSnapshots>true</overWriteSnapshots>

<overWriteIfNewer>true</overWriteIfNewer>

</configuration>

</execution>

</executions>

</plugin>

</plugins>

</build>

</project>