使用maven如何將項目中的test代碼打包進jar中

maven將項目的test代碼打包進jar中

項目結構如下:

…/src/main/java/package/** <– application code

…/src/test/java/package/** <– test code

需求:

test中有一個包含main方法的主類TestMain.java,將main、test、全部依賴代碼打包到一個jar包中,最終能通過java -jar的方式運行TestMain

這裡Maven Jar Plugin 、 Maven Shade Plugin 都不是很適用。

我們選擇Maven Assembly Plugin來打包

三步實現:

在pom中添加如下

<project>
    ...
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <descriptor>src/main/assembly/assembly.xml</descriptor>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <archive>
                                <manifest>
                                    <mainClass>com.sample.TestMain</mainClass>
                                </manifest>
                            </archive>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            ...
        </plugins>
    </build>
    <dependencies>
      ...
    </dependencies>
</project>

在resources中添加一個assembly.xml文件

<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <id>fat-tests</id>
    <formats>
        <format>jar</format>
    </formats>
    <includeBaseDirectory>false</includeBaseDirectory>
    <dependencySets>
        <dependencySet>
            <outputDirectory>/</outputDirectory>
            <useProjectArtifact>true</useProjectArtifact>
            <unpack>true</unpack>
            <scope>test</scope>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <directory>${project.build.directory}/test-classes</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>**/*.class</include>
            </includes>
            <useDefaultExcludes>true</useDefaultExcludes>
        </fileSet>
    </fileSets>
</assembly>

運行mvn package

在target目錄下會生成一個xxxxx-1.0-SNAPSHOT-assembly.jar的文件,這就是我們需要的jar包瞭。我們可以用壓縮軟件看到生成的這個jar包中包含瞭test中所有的測試類。

可以直接使用java -jar xxxxx-1.0-SNAPSHOT-assembly.jar來運行jar包。主類就是第一步中設置的那個類

參考鏈接

maven打包跳過test

在pom.xml文件中添加插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>
    <skipTests>true</skipTests>
    </configuration>
</plugin>

使用mvn命令 帶附加參數

mvn install -Dmaven.test.skip=true

或者

mvn install -DskipTests

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: