Maven 打包为可运行jarpom文件配置

    xiaoxiao2024-03-23  123

    楔子

    Maven 打包为可运行jar ,pom文件配置。

    注意

    在IDEA 运行是,相关配置文件会被打包到 \target\classes目录下,添加下面这个会使配置文件进入 指定的位置,而不是 \target\classes。会造成程序提示找不到 配置文件等。 <!-- && 在IDE中运行要把这个给注释掉,因为IDEA打包 默认路劲是 classes ,有下面行会把配置文件转移到其他目录 --> <!--<targetPath>${project.build.directory}/config</targetPath>-->

    打包命令(第三方jar单独拷贝出来放在lib目录)

    mvn clean dependency:copy-dependencies -DoutputDirectory=target/lib package
    <?xml version="1.0" encoding="UTF-8"?> <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>com.zhuzi.camel</groupId> <artifactId>camelStudy</artifactId> <version>1.0-SNAPSHOT</version> <properties> <!-- 文件拷贝时的编码 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <!-- 编译时的编码 --> <maven.compiler.encoding>UTF-8</maven.compiler.encoding> <apache.common.version>2.8.0</apache.common.version> <camel.version>2.23.0</camel.version> <scala.version>2.11.12</scala.version> </properties> <dependencies> <!-- Camel start --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-core</artifactId> <version>${camel.version}</version> </dependency> </dependencies> <build> <!-- 打包命令 --> <!-- mvn clean dependency:copy-dependencies -DoutputDirectory=target/lib package --> <!-- <finalName>${artifactId}-${version}</finalName> 这是默认名 ,修改打包名称可以修改这个 --> <!--<sourceDirectory>src/main/java</sourceDirectory>--> <resources> <!-- 解决打包时候Mapper.xml没进入 dao.class目录 (报错提示org.apache.ibatis.binding.BindingException: Invalid bound statement) --> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> <!-- 控制资源文件的拷贝 --> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/**</include> </includes> <!--<filtering>false</filtering>--> <!-- && 在IDE中运行要把这个给注释掉,因为IDEA打包 默认路劲是 classes ,有下面行会把配置文件转移到其他目录 --> <!--<targetPath>${project.build.directory}/config</targetPath>--> </resource> </resources> <pluginManagement> <plugins> <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <!-- 拷贝依赖的jar到lib目录(如果不配置可以使用 如下命令 把 依赖的jar 拷贝出来) (虽然配置了,但是不知道为什么不生效) --> <!-- mvn dependency:copy-dependencies -DoutputDirectory=target/lib --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <id>copy</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> <includeScope>compile</includeScope><!-- 拷贝是排除test 的依赖 这部分可以参考https://liugang594.iteye.com/blog/2093082 --> </configuration> </execution> </executions> </plugin> <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <!-- Step 1 设置编译版本 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <!-- 编译时使用的JDK版本和UTF8编码 --> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <showWarnings>true</showWarnings> </configuration> </plugin> <!-- Step 1 end 设置编译版本/end --> <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <!-- Step 2 打包jar文件时,配置manifest文件,加入lib包的jar依赖 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> <configuration> <archive> <!-- 清单文件 --> <manifest> <mainClass>com.zhuzi.camel.App2</mainClass> <addClasspath>true</addClasspath> <useUniqueVersions>false</useUniqueVersions> <classpathPrefix>lib/</classpathPrefix> </manifest> <!-- 给清单文件添加键值对(配置文件外置) --> <manifestEntries> <Class-Path>config/</Class-Path> </manifestEntries> </archive> </configuration> </plugin> <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <!-- 解决资源文件的编码问题 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.1.0</version> <configuration> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <!-- 下面这个配置了可以直接运行 执行命令如下(不配置为好) --> <!-- mvn exec:exec --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.6.0</version> <executions> <execution> <goals> <goal>exec</goal> </goals> </execution> </executions> <configuration> <executable>java</executable> <arguments> <argument>-classpath</argument> <classpath> </classpath> <argument>com.zhuzi.camel.App2</argument> </arguments> </configuration> </plugin> <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> <!-- 打包source文件为jar文件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <configuration> <attach>true</attach> <encoding>UTF-8</encoding> </configuration> <executions> <execution> <phase>compile</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> </pluginManagement> </build> <repositories> <repository> <id>nexus-aliyun</id> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> <releases> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots> </repository> </repositories> </project>

    其他博文

    [Maven]Maven构建可执行的jar包(包含依赖jar包)

    最新回复(0)