Maven工程编译

  • 编译时需使用lib目录下的jar包时,需要在pom中添加<plugin>

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <!--指定外部lib-->
                        <extdirs>${basedir}\src\main\resources\lib</extdirs>
                    </compilerArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>
  • 如果遇到测试失败时,依然希望继续构建项目,那么需要设置surefire插件的testFailureIgnore属性为true

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                </configuration>
            </plugin>
        </plugins>
    </build>

Maven聚合工程,不建议在parent工程中写公共代码,因为parent工程中要依赖子工程,而子工程要使用parent工程中的公共代码是又要依赖parent工程,如此形成了一个循环依赖,在打包时便会报错并打包失败(不影响代码编译;但是打包时,parent工程要引用子工程的jar包,而打包子工程又需要引用parent工程的jar包,但此时两个工程都还没有打包,所以打包失败)。

解决方法:

  • 不要在parent工程中写公共代码

    如果必须要抽公共代码,建议新建一个工程作为专门用来写公共代码,在所有工程的上一级目录创建一个pom.xml用来管理所有的子工程,如此便不会因为循环依赖导致打包失败
  • 先打包parent工程,再打包子工程

    如果已经在parent工程中写了公共代码,则需要现将parent工程中的<modules></modules>标签中的管理的子工程注释掉,并修改<packaging>pom</packaging>为<packaging>jar</packaging>(parent工程的pachaging都是pom),然后install将jar包安装到本地仓库;parent工程打包成功后,将之前注释调的<modules></modules>标签中的注释去掉,修改<packaging>jar</packaging>为<packaging>pom</packaging>,然后在parent工程package打包子工程。

猜你喜欢

转载自blog.csdn.net/zhangwenchao0814/article/details/108645973
今日推荐