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>