文章出处:http://bakcom.iteye.com/blog/280604
Maven2的运行命令为:mvn,
常用命令为:
mvnarchetype:create:创建Maven项目
mvncompile:编译源代码
mvntest-compile:编译测试代码
mvntest:运行应用程序中的单元测试
mvnsite:生成项目相关信息的网站
mvnclean:清除目标目录中的生成结果
mvnpackage:依据项目生成jar文件
mvninstall:在本地Repository中安装jar
mvneclipse:eclipse:生成Eclipse项目文件
生成项目
建一个JAVA项目:mvnarchetype:create -DgroupId=com.demo -DartifactId=App
建一个web项目:mvnarchetype:create -DgroupId=com.demo -DartifactId=web-app -DarchetypeArtifactId=maven-archetype-webapp
生成Eclipse项目
普通Eclipse项目执行:mvneclipse:eclipse
Eclipse WTP项目执行:mvneclipse:eclipse–Dwtpversion=1.0
(wtp1.0以上版本均可用)
pom.xml文件基本节点介绍
<project>:文件的根节点.
<modelversion>:pom.xml使用的对象模型版本.
<groupId>:创建项目的组织或团体的唯一Id.
<artifactId>:项目的唯一Id,可视为项目名.
<packaging>:打包物的扩展名,一般有JAR,WAR,EAR等
<version>:产品的版本号.
<name>:项目的显示名,常用于Maven生成的文档。
<url>:组织的站点,常用于Maven生成的文档。
<description>:项目的描述,常用于Maven生成的文档。
在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署。
目前<scope>可以使用5个值:
compile:缺省值,适用于所有阶段,会随着项目一起发布。
provided:类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
runtime:只在运行时使用,如JDBC驱动,适用运行和测试阶段。
test:只在测试时使用,用于编译和运行测试代码。不会随项目发布。
system:类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
定义自己的结构
新建一个archetype项目:
mvnarchetype:create\
-DgroupId=cn.prof\
-DartifactId=prof-archetype\
-DarchetypeArtifactId=maven-archetype-archetype
主要的模板文件:archetype-resources/pom.xml
修改其中内容
修改META-INF/maven/archetype.xml中定义了相关的sources
安装此项目:mvninstall
执行下面的命令创建新目录的项目:
mvnarchetype:create -DgroupId=com.mergere.mvnbook \
-DartifactId=proficio-example\
-DarchetypeGroupId=com.xxx.mvn\
-DarchetypeArtifactId=prof-archetype\
-DarchetypeVersion=1.0-SNAPSHOT
目录说明
Maven2Directory | ||||
目录 | 二级目录 | 三级目录 | 四级目录 | 说明 |
pom.xml | Maven2的项目设置文件 | |||
src/ | 源码目录 | |||
main/ | 项目主体目录根 | |||
java/ | 源代码目录 | |||
resources/ | 所需资源目录 | |||
filters/ | 资源过滤文件目录 | |||
assemby/ | Assembly descriptors | |||
config/ | 配置文件根目录 | |||
webapp/ | web应用目录 | |||
WEB-INF/ | WEB-INF目录 | |||
test/ | 项目测试目录根 | |||
java/ | 测试代码目录 | |||
resources/ | 测试所需资源目录 | |||
filters/ | 测试资源过滤文件目录 | |||
site/ | 与site相关的资源目录 | |||
target/ | 输出目录根 | |||
classes/ | 项目主体输出目录 | |||
test_classes/ | 项目测试输出目录 | |||
site/ | 项目site输出目录 |
碰到的问题
<!---->1.<!---->当M2eclipse插件装上之后,会报这个错
Eclipse is running in a JRE, but a JDK is required
Some Maven plugins may not work when importing projects or updating source folders.
解决办法:查看eclipse\readme\readme_eclipse.html里面有详细说明,在Selecting a workspace这一节
创建一个快捷方式,设定目标位置为D:\eclipse_jee\eclipse.exe -vm D:\Java\jdk1.5.0_10\bin\javaw
因为默认vm为jdk\jre\bin\javaw,直接改到jdk下,错误即可消除
<!---->2.<!---->使用命令mvneclipse:eclipse–Dwtpversion=1.0之后,导入的项目Project Facet的java还是1.4,而我Eclipse上设置的是5.0
解决办法:在pom.xml中plugins加入说明就可以了
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.5</source>
- <target>1.5</target>
- </configuration>
- </plugin>
- </plugins>
- <plugins><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.5</source><target>1.5</target></configuration></plugin></plugins>
- <plugins><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.5</source><target>1.5</target></configuration></plugin></plugins>
<!----><!----><!----><!---->
3. 在使用命令mvneclipse:eclipse 之后,import到Eclipse,然后在Eclipse项目上点右键,选择插件Maven>Enable Dependency Management后,会报重复引用依赖的错误
解决办法 :再执行mvneclipse:eclipse然后刷新Eclipse的项目,取消掉maven插件的引用依赖,错误就会消除
4. Failure executing javac, but could not parse the error:
编译器 (1.5.0_10) 中出现异常。 如果在 Bug Parade 中没有找到该错误,请在 Java Developer Connection (http://java.sun.com/webapps/bugreport ) 对该错误进行归档。请在报告中附上您的程序和以下诊断信息。谢谢您的合作。
java.nio.BufferOverflowException