从npm 角度理解 mvn 的 pom.xml
pom -- project object model. 用于描述项目的配置:
- 基础说明
- 依赖
- 如何构建运行
类似 node.js 的 package.json
mvn 与 npm 也是有雷同的地方。junit junit ${junit.version} org.springframework spring-core ${spring.version} commons-logging commons-logging
dependencies in pom.xml 相当于 项目的依赖包,启动的时候会去找,如果没有就去下载。
类似npm 的package.json dependencydependency 里面的groupId, 相当与组织机构的项目组ID,attifactId 项目的通用ID,version 当然是要的了。
然而看起来,要记住的内容十分多,不如npm : 只需要知道package name, version 简单可以用latest。记住groupid 真的不容易。However,其实并不需要真的记住。有IDE 工具协助:
安装elipse , maven plugin, 打开 pom.xml , 选择 dependencies, 选择 Add, 直接在search 处,输入你的package name, 会列出搜索结果,自动使用 latest version。当然也可以展开细节list指定某个特定的version。 如果不用elipse, 也可:mvn package
compile 正常后,如果你用的archeType 是web-app,你可以打包到tomcat 的webapp目录去运行;其他的类似 譬如打包出jar。
tomcat deploy
以一个archType 为web-app 的项目为例,mvn package 后, 除了上述的cp 到tomcat webapp 目录,
另外一种手动页面的部署方法: localhost:8080 --> manage app 按要求输入用户名密码后, 在输入 locahost:8080/hello 则可以看到hello world 页面.如果遇到403,请参考这里。
mvn tomcat:run mvn jetty:run
tomcat/jetty 是一些mvn plugin.
所谓mvn plugin 可以理解成,这是使得可以集成与mvn 命令一起使用的插件。官方文档Also:
mvn 可用编译,打包,安装,build项目编译:(nodejs 里面没有这个--因动态语言)
mvn compile
compile 会下载dependency依赖。
打包:(nodejs 里面没有这个--因动态语言)
4.0.0
org.springframeworkgs-mavenjar0.1.0
运行mvn package 后,会产生 {$artifactId}-{$version}-jar,如上述的:gs-maven-0.1.0.jar (target 文件夹)
安装 (类似: npm install)
mvn install
build (类似npm script 里面的自定义脚本: npm start )
根据plugin 输入参数构建,如上述的:mvn jetty:run
注意: 使用jetty 来跑的时候,需要配置jetty 的plugin
org.mortbay.jetty maven-jetty-plugin 6.1.26 hello
常见的plugins
类似 npm clean , npm ,see npm --help
speed it up
mvn 经常很慢,等很久都没完成。参考以下
mvn -T 4 install -- will use 4 threads