zoukankan      html  css  js  c++  java
  • maven打包可运行jar包

    一、pom文件

        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                        <skip>true</skip>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifest>
                                <mainClass>fengcan.RunApp</mainClass>
                            </manifest>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>
                                jar-with-dependencies
                            </descriptorRef>
                        </descriptorRefs>
                    </configuration> 
                </plugin>
                
            </plugins>
        </build>

    两个插件:

    <artifactId>maven-compiler-plugin</artifactId>
    <artifactId>maven-assembly-plugin</artifactId>
    1、其中maven-compiler-plugin在这里的功能主要是配置jdk版本和跳过测试代码(src/test/java),如果同其他方式代替则可省略maven-compiler-plugin。
    2、而maven-assembly-plugin,插件才是打包可运行jar包的主要插件。<mainClass>fengcan.RunApp</mainClass>是指定运行主类的配置。如下图:

     二、运行方式

    在有pom文件的路径下打开命令行工具:

    先通过:mvn -verison,检查mvn是否安装成功

    1、mvn clean assembly:single,该命令只打包出一个可运行的jar。

    如下图:target目录下

    2、mvn clean assembly:single,该命令相当于mvn package和mvn assembly:single。此时mvnpackage会生成一个只用编译后classes的文件。

    如下图:mvn clean package命令结果:

    而mvn clean assembly:assembly,则是:

    3、如何通过mvn clean package来打包

    修改pom文件

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifest>
                                <mainClass>fengcan.RunApp</mainClass>
                            </manifest>
                        </archive>
                        <descriptorRefs>
                            <descriptorRef>
                                jar-with-dependencies
                            </descriptorRef>
                        </descriptorRefs>
                    </configuration>
                    <executions>  
                    <execution>  
                        <id>make-assembly</id>  
                        <phase>package</phase>  
                        <goals>  
                            <goal>single</goal>
                        </goals>  
                    </execution>  
                </executions>  
                </plugin>

    新加了:

                    <executions>  
                    <execution>  
                        <id>make-assembly</id>  
                        <phase>package</phase>  
                        <goals>  
                            <goal>single</goal>
                        </goals>  
                    </execution>  
                </executions> 

    该配置表示在执行package命令时,执行assembly里的single命令。当然也可将single改成assembly,但是没有意义,只会增加打包步骤,结果一样。

    然后执行:mvn clean package

     三、指定jdk和编码的两种方式

    如果不指定编码,maven会默认使用jdk1.5,那么使用1.5以上的代码会报错。

    1、在maven-compiler-plugin里指定,在configuration里,指定source和target和encoding

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding><!-- 字符集编码 -->
                  
                    </configuration>
                </plugin>

    2、在properties里指定

    <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>produce</groupId>
        <artifactId>produce</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.8</maven.compiler.source>
            <maven.compiler.target>1.8</maven.compiler.target>
        </properties>
    </project>

    四、跳过test代码(src/test/java)的两种方式

    1、在maven-compiler-plugin里指定,在configuration里,指定skip

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.1</version>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>

    2、使用命令指定

    添加:-DskipTests 或 -Dmaven.test.skip=true

    如:

    mvn clean package -DskipTests

    mvn clean package -Dmaven.test.skip=true

    就算这个世道烂成一堆粪坑,那也不是你吃屎的理由
  • 相关阅读:
    初识HTML5
    java_类的有参方法
    示例:人机猜拳(请各位大佬看下)
    java-类和对象(笔记)
    Redis设计与实现——多机数据库的实现
    Redis设计与实现——独立功能的实现
    mina
    GUAVA-cache实现
    GUAVA-ListenableFuture实现回调
    Netty多协议开发
  • 原文地址:https://www.cnblogs.com/whalesea/p/13552820.html
Copyright © 2011-2022 走看看