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接口部分
编写一个client.pom.xml文件
增加如下配置
<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会自动下载相关依赖,当你发布到服务器上时,要小心那些看不见的依赖包
Maven实用总结的更多相关文章
- Maven 实用命令和技巧
1.Jar冲突排查 maven dependency:tree 人工排除
- maven 实用的命令
查询某个pom的来源: com.taobao.langyan langyan-client 命令: mvn dependency:tree -Dverbose -Dincludes=com.aliba ...
- Maven在Eclipse中的实用小技巧
前言 我们在开发的工程中很多都是Maven项目,这样更加便于我们jar包的管理.而我们一般使用的IDE都是Eclipse,由于我们在日常的开发过程中会经常要用到一些Maven的操作,所以我今天 ...
- maven 高级玩法
maven 高级玩法 标签(空格分隔): maven 实用技巧 Maven 提速 多线程 # 用 4 个线程构建,以及根据 CPU 核数每个核分配 1 个线程进行构建 $ mvn -T 4 clean ...
- Java架构师必会的技能
Java架构师必会的技能 我把它分为了五大专题 工程化专题 工程化专题 git git安装使用 git日常使用:fetch/pull/push/revert/rebase git分支管理git flo ...
- 学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门)
一.前言 早就知道maven 在java 项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档.发现这些文档的作者都是java 的大腕,大多都是站在掌握了一定maven 基 ...
- 实用maven笔记二-信息&依赖管理
目前我经历的公司的主要项目管理工具都是maven,maven除了是一个实用的构建工具外,也是一个功能强大的项目管理工具.其管理功能分为信息管理和依赖管理.通过pom.xml文件实现. 信息管理 信息管 ...
- maven 简单实用教程
1. Maven介绍 1.1. 简介 java编写的用于构建系统的自动化工具. 目前版本是2.0.9,注意maven2和maven1有很大区别,阅读第三方文档时需要区分版本. 1.2. Maven资源 ...
- java maven quartz exampe 实用指南
pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...
随机推荐
- Eclipse导入Java工程导入错误
1.在一台电脑A上用Eclipse新建的Java工程,换了一台电脑B,再用Eclipse导入时却出现了错误,工程显示红色叹号,并有如下两个错误提示: The project cannot be bui ...
- jQuery拖拽 & 弹出层
了解更多请查看 官网 和 API iDrag & iDialog 介绍 特点: iDialog.js依赖于jquery编写的简单易用的对话框,同时还可以通过添加css3,改变对话框的展现动画. ...
- iOS多线程
iOS开发Demo(示例程序)源代码
本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址(2013年12月29日更新版) iOS程序源代码下载链接:01.大任务.zip22 ...
- 4、什么是事务?MySQL如何支持事务?
什么是事务? 事务是由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行.程序和事务是两个不同的概念.一般而言:一段程序中可能包含多个事务.(说白了就是几步的数据库操作 ...
- mouseover/mouseenter/mouseout/mouseleave的区别
mouseover:鼠标指针穿过被选元素或其子元素,均会触发事件 mouseenter:鼠标指针穿过被选元素时才触发事件 mouseout:鼠标指针离开被选元素或其子元素则触发事件 mouseleav ...
- Ubuntu中启用关闭Network-manager网络设置问题! 【Server版本】
在UbuntuServer版本中,因为只存有命令行模式,所以要想进行网络参数设置,只能通过修改/etc/network/interfaces.具体设置方法如下: (1) UbuntuServer 修改 ...
- java===java基础学习(11)---继承
继承可以解决代码复用,让编程更加靠近人的思维.当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法.所有的子类不需要重新定义这些属性和方法,只需要通过ex ...
- python基础===进程,线程,协程的区别(转)
本文转自:http://blog.csdn.net/hairetz/article/details/16119911 进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度. 线程拥有自 ...
- Linux下用freetds执行SQL Server的sql语句和存储过程
Linux下用freetds执行SQL Server的sql语句和存储过程 http://www.linuxidc.com/Linux/2012-06/61617.htm freetds相关 http ...
- C#数据没初始化,使用会报错,可以初始化null
protected void Page_Load(object sender, EventArgs e) { string[] A; if (B== 0) { A = new string[] {1, ...