《Maven官方指南》url:
http://ifeve.com/m2-getting-started/
Maven基本是一个项目管理和理解的工具就提供一种方式让我们管理:
- 构建
- 文档
- 报表
- 依赖
- SCMs
- 发布
- 分布式
创建简单的Maven项目,从命令行执行以下:
mvn -B archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DgroupId=com.mycompany.app \
-DartifactId=my-app
pom.xml 包含项目的项目对象模型。pom重要标签:
- project 这是Maven pom.xml文件中最顶级的节点。
- modelVersion 这个节点指示 POM的对象模型试验什么版本。模型的版本改变非常少但是这是强制性的为了确定使用的稳定性和当Maven开发者认为至为重要的是改变这个模型。
- groupld 这个节点指示是创建项目的组织或组的唯一标识符。这个groupId是项目键标识符的其中一个和通常基于完整有资格的组织的领域名字。例子:org.apache.maven.plugins 是设计的一个组对于所有Maven插件。
- artifactId 这个节点指示是私有工件本被项目生成的唯一基本名字。这个项目的私有工件通常是一个JAR文件。第二,工件像源码捆也用于这个工件作为他们最终的名字。一个通常的由Maven生成的工件会有表单<artifactId>-<version>.<extension>(例如 myapp-1.0.jar)。
- packaging 这个节点是用于这个工件肺打包类型(例如 JAR,WAR,EAR 等等)。这不仅意味着工件生成的是JAR,WAR,EAR但是指示是一个指定生命周期使用,作为构建进程的一部分。(这个周期是一个话题我们将处理并进一步研究在这个指南里。对于现在,只要记住项目的packaging指示可以作为一部分在自定义构建周期中。)packaging的默认值是JAR 所以你不需为大部分项目指定。
- version 这个节点指示着这个工件被创建的版本。Maven 有很长的一段路来帮助你管理版本和你经常看的SNAPSHOT指示器在这个版本中,它表示这这个项目是正在开发的状态。我们将讨论快照的使用和他们怎么进一步使用在指南中。
- name 这个节点指示这项目显示名字,这是经常使用Maven的生成文件。
- url 此元素指示项目的网站可在何处找到。这是经常使用Maven的生成文件。
- description 此元素为您的项目提供基本说明。这是经常使用Maven的生成文件。
项目的原型生成之后,您还将注意到以下目录结构已被创建:
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
如果你想简单编译你的测试代码(但是不执行测试代码),你可以执行:
mvn test-compile
关于项目基本信息是执行下面的指令:
mvn site
有许多其他的独立目标也可以执行,例如:
mvn clean
这将在开始之前将所有生成数据移除target目录,以便它是新的。 也许你想IntelliJ理念产生的描述符的项目,是吗?
mvn idea:idea
这可以运行在以前的想法项目的顶部-它会更新设置,而不是开始就是新的。 如果你是Eclipse IDE,执行:
mvn eclipse:eclipse
怎么使用插件?
每当你想要定制Maven项目的建设,这是通过增加或重新配置插件做的。 为Maven 1.0用户的笔记: 在1.0中,你将加入一些 preGoal到maven.xml文件中和一些实体到project.properties.这里有一点不同在这个例子,我们将配置运行使用JDK 5.0编译编译源码。这是简单添加到你的POM:
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
...
这是被Maven使用的规则:任何目录和文件放置在 ${basedir}/src/main/resources 目录就会被打包到你的JAR,确切相同的结构在JAR的开始目录。
my-app
|-- pom.xml
`-- src
|-- main
| |-- java
| | `-- com
| | `-- mycompany
| | `-- app
| | `-- App.java
| `-- resources
| `-- META-INF
| `-- application.properties
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
添加资源到你的单元测试中,你遵循相同的模式作为你的资源添加到罐子里除了你的目录的地方资源为${basedir}/src/test/resources。在这一点上,您将有一个项目目录结构,看起来如下:
my-app
|-- pom.xml
`-- src
|-- main
| |-- java
| | `-- com
| | `-- mycompany
| | `-- app
| | `-- App.java
| `-- resources
| `-- META-INF
| |-- application.properties
`-- test
|-- java
| `-- com
| `-- mycompany
| `-- app
| `-- AppTest.java
`-- resources
`-- test.properties
在单元测试中,您可以使用如下代码来访问测试所需的资源:
...
// Retrieve resource
InputStream is = getClass().getResourceAsStream( "/test.properties" );
// Do something with the resource
...
让我们加入一对属性到 application.properties文件(我们放在src/main/resources ,目录)那些值将会被支持在资源被过滤的时候。
# application.properties
application.name=${project.name}
application.version=${project.version}
在这里,你可以执行下面的命令(进程资源是在构建周期里的资源会被拷贝和过滤)
mvn process-resources
怎么创建文档?
让你开始使用Maven的文件系统,你可以使用原型机制来生成一个网站的现有项目中使用以下命令
mvn archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-site \
-DgroupId=com.mycompany.app \
-DartifactId=my-app-site
注意,生命周期适用于任何项目类型。例如,回到基本目录中,我们可以创建一个简单的web应用程序:
mvn archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-webapp \
-DgroupId=com.mycompany.app \
-DartifactId=my-webapp
怎么同时建立多个项目?
处理多个模块的概念是建立在Maven。在本节中,我们将展示如何建立上面的WAR,并包括以前的jar,以及在一个步骤。
首先,我们需要在上面其他两项目加上父目录和pom.xml文件,所以它看起来应该像这样:
+- pom.xml
+- my-app
| +- pom.xml
| +- src
| +- main
| +- java
+- my-webapp
| +- pom.xml
| +- src
| +- main
| +- webapp