Maven实用总结

使用Maven还是推荐IDEA,以前用eclipse总是喜欢出现乱七八糟的问题,具体错误和解决方案也记不清楚了。

下面总结下IDEA中遇到的问题和解决方法:

与IDEA搭配的相关问题

如何根据模板快速创建Maven项目

在创建过程中,properties属性中增加一个

archetypeCatalog = internal

详细请点此

默认JDK1.5的问题

增加配置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

结合Mybatis无法加载配置文件

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.xml</include>
        </includes>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
    </resource>
</resources>

同理还有testResources配置

使用jetty插件运行web项目修改依赖模块无效

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>
    <version>6.1.9</version>
    <configuration>
        <contextPath>/web-name</contextPath>
        <scanTargets>
            <scanTarget>src/main/webapp/WEB-INF</scanTarget>
        </scanTargets>
        <connectors>
            <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                <port>8087</port>
                <maxIdleTime>60000</maxIdleTime>
            </connector>
        </connectors>
    </configuration>
</plugin>

对于多模块项目,如果修改的是依赖模块的类,就要将该模块install一下再运行.

jetty:run虽然不以打包成war的方式运行,但运行前会去编译与解析子项目,当本地库有了子项目的jar依赖就不会报错,并且web加载的依赖是本地库jar包,而不是从依赖模块的编译目录加载类,所以修改了依赖模块的类,如果没有install更新到本地库,web的加载不是更新类。

当然修改本web的类还是没必要在父项目install,因为jetty:run不会打包本web模块的类成jar,而是从本web模块的编译目录来加载类。

只编译api接口部分

  1. 编写一个client.pom.xml文件

  2. 增加如下配置

<plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <includes>
            <include>**/user/api/**</include>
        </includes>
    </configuration>
</plugin>

命令:clean deploy -f client.pom.xml -Dmaven.test.skip=true

windows自动打包脚本

如果svn在内网,nexus部署在外网,没用jenkins的话,可以写一个脚本方便打包

color 02  
set project=%~n0  
set curdir=%~dp0  
set partition=%curdir:~0,1%  
cd %curdir:~0,20%  

D:
@echo build train-share...
cd devData\common\train-share
call mvn clean deploy -Dmaven.test.skip=true

@echo build train-user-server...
cd ..\..\server\train-user-server
call mvn clean deploy -Dmaven.test.skip=true
call mvn clean deploy -f client.pom.xml -Dmaven.test.skip=true

set nowDate=%date:~0,4%%date:~5,2%%date:~8,2%

echo 开始拷贝jar包至桌面 =================================  
if exist "%userprofile%\Desktop\" (  

    REM 适用于Win7系统  
    xcopy F:\repo\cn\pxzs\train\train-share\0.0.1-SNAPSHOT\train-share-0.0.1-SNAPSHOT.jar %userprofile%\Desktop\%nowDate% /Y /N
    xcopy F:\repo\cn\pxzs\train\train-user-server\0.0.1-SNAPSHOT\train-user-server-0.0.1-SNAPSHOT.jar %userprofile%\Desktop\%nowDate% /Y /N
    xcopy F:\repo\cn\pxzs\train\train-user-server-api\0.0.1-SNAPSHOT\train-user-server-api-0.0.1-SNAPSHOT.jar %userprofile%\Desktop\%nowDate% /Y /N
) 
echo jar包已经拷贝至桌面 =================================  

echo; 
pause

为不同环境打包

不同环境下需要构建不同的包 点此查看具体


注意:

maven会自动下载相关依赖,当你发布到服务器上时,要小心那些看不见的依赖包

posted @ 2017-03-23 22:47  Lucare  阅读(204)  评论(0编辑  收藏  举报