读书人

Maven官方用户入门指南”通译之八(完)

发布时间: 2013-11-15 22:28:15 作者: rapoo

Maven官方用户入门指南”翻译之八(完)

如何创建api帮助手册?

现在我们就开始生成maven工程的系统文档,你可以利用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

需要注意的是上面执行命令必须在一行中写成。上述命令会生产一个?my-webapp目录,他包括如下项目描述:

?

?

<project xmlns="http://maven.apache.org/POM/4.0.0"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0                      http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.mycompany.app</groupId>  <artifactId>my-webapp</artifactId>  <version>1.0-SNAPSHOT</version>  <packaging>war</packaging>  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </dependency>  </dependencies>  <build>    <finalName>my-webapp</finalName>  </build></project>

需要注意packaging元素,他指定打包成war,进入webapp目录执行:

?

?

mvn clean package

你可以看到生成了?target/my-webapp.war,上述为正常执行步骤。

?

如果一次性构建多个工程?

maven2.0中提出了构建多模块的概念。本章节我们会阐述如何在一步中同时构建war(上个项目)和jar(上上个项目),首先我们需要在两个工程上级目录添加一个父pom.xml文件,结构如下所示:

?

+- pom.xml+- my-app| +- pom.xml| +- src|   +- main|     +- java+- my-webapp| +- pom.xml| +- src|   +- main|     +- webapp

父pom包括的内容如下:

?

?

<project xmlns="http://maven.apache.org/POM/4.0.0"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0                      http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.mycompany.app</groupId>  <artifactId>app</artifactId>  <version>1.0-SNAPSHOT</version>  <packaging>pom</packaging>  <modules>    <module>my-app</module>    <module>my-webapp</module>  </modules></project>

?在?my-webapp/pom.xml中添加对my-app的依赖:

?

?

 ...  <dependencies>    <dependency>      <groupId>com.mycompany.app</groupId>      <artifactId>my-app</artifactId>      <version>1.0-SNAPSHOT</version>    </dependency>    ...  </dependencies>

最后我们在每个子pom中添加父pom的元素:

?

?

<project xmlns="http://maven.apache.org/POM/4.0.0"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0                      http://maven.apache.org/xsd/maven-4.0.0.xsd">  <parent>    <groupId>com.mycompany.app</groupId>    <artifactId>app</artifactId>    <version>1.0-SNAPSHOT</version>  </parent>  ...

在父pom所在的目录执行如下命令:

?

?

mvn clean install

那么war生成了,my-webapp/target/my-webapp.war,他的lib信息如下:

?

?

$ jar tvf my-webapp/target/my-webapp-1.0-SNAPSHOT.war   0 Fri Jun 24 10:59:56 EST 2005 META-INF/ 222 Fri Jun 24 10:59:54 EST 2005 META-INF/MANIFEST.MF   0 Fri Jun 24 10:59:56 EST 2005 META-INF/maven/   0 Fri Jun 24 10:59:56 EST 2005 META-INF/maven/com.mycompany.app/   0 Fri Jun 24 10:59:56 EST 2005 META-INF/maven/com.mycompany.app/my-webapp/3239 Fri Jun 24 10:59:56 EST 2005 META-INF/maven/com.mycompany.app/my-webapp/pom.xml   0 Fri Jun 24 10:59:56 EST 2005 WEB-INF/ 215 Fri Jun 24 10:59:56 EST 2005 WEB-INF/web.xml 123 Fri Jun 24 10:59:56 EST 2005 META-INF/maven/com.mycompany.app/my-webapp/pom.properties  52 Fri Jun 24 10:59:56 EST 2005 index.jsp   0 Fri Jun 24 10:59:56 EST 2005 WEB-INF/lib/2713 Fri Jun 24 10:59:56 EST 2005 WEB-INF/lib/my-app-1.0-SNAPSHOT.jar

那么他们是如何工作的呢?

首先父pom会构建他包含的所有模块,他告诉maven去执行所有的罗列出来的模块,而不仅仅是这一个(你可以参考?--non-recursive?命令)。

?

接着我们告知war他需要jar,那么这个jar在class path下必须是可用的,那么jar必须在war之前构建因为我们在war的pom中已经显示指明了依赖。

你也注意到了?junit-3.8.1.jar也是war的一个依赖,但是他没有出现在lib中。原因是?<scope>test</scope>,他指明了他只在test中才会用到,因此他不会出现。

最后一步包含了对父pom的定义。这个跟maven1.0的extend?是有所不同的,这保证了pom可以基于父pom来寻找即使他们分布式部署。

与maven1.0不同,你只需要执行install就可以完成上述步骤,你可以执行package就可以基于目标目录而不是资源库生成。

你也可以生成你的IDEA工作环境:

mvn idea:idea

?

注意:

maven的技术翻译官方指南已经完成,下面会陆续开展其他的翻译,大家有什么感兴趣的也可以给我留言。

?

2 楼 zhuxinyu 刚刚 继续加油。

读书人网 >开源软件

热点推荐