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>