博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maven官方用户入门指南”翻译之八(完)
阅读量:4112 次
发布时间:2019-05-25

本文共 3177 字,大约阅读时间需要 10 分钟。

如何创建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目录,他包括如下项目描述:

 

 

4.0.0
com.mycompany.app
my-webapp
1.0-SNAPSHOT
war
junit
junit
3.8.1
test
my-webapp

需要注意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包括的内容如下:

 

 

4.0.0
com.mycompany.app
app
1.0-SNAPSHOT
pom
my-app
my-webapp

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

 

 

...  
com.mycompany.app
my-app
1.0-SNAPSHOT
...

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

 

 

com.mycompany.app
app
1.0-SNAPSHOT
...

在父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的技术翻译官方指南已经完成,下面会陆续开展其他的翻译,大家有什么感兴趣的也可以给我留言。

 

转载地址:http://fsqsi.baihongyu.com/

你可能感兴趣的文章
python循环语句与C语言的区别
查看>>
Vue项目中使用img图片和background背景图的使用方法
查看>>
vue 项目中图片选择路径位置static 或 assets区别
查看>>
vue项目打包后无法运行报错空白页面
查看>>
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
vue2.* 中 使用socket.io
查看>>
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
关于无线PCB中 中50欧姆的特性阻抗的注意事项
查看>>
Spring的单例模式源码小窥
查看>>
后台服务的变慢排查思路(轻量级应用服务器中测试)
查看>>
MySQL中InnoDB事务的默认隔离级别测试
查看>>
微服务的注册与发现
查看>>