从npm 角度理解 mvn 的 pom.xml

pom -- project object model. 用于描述项目的配置:

  • 基础说明
  • 依赖
  • 如何构建运行

类似 node.js 的 package.json

mvn 与 npm 也是有雷同的地方。


  1. <dependencies>
  2. <!-- Unit Test -->
  3. <dependency>
  4. <groupId>junit</groupId>
  5. <artifactId>junit</artifactId>
  6. <version>${junit.version}</version>
  7. </dependency>
  8. <!-- Spring Core -->
  9. <dependency>
  10. <groupId>org.springframework</groupId>
  11. <artifactId>spring-core</artifactId>
  12. <version>${spring.version}</version>
  13. <exclusions>
  14. <exclusion>
  15. <groupId>commons-logging</groupId>
  16. <artifactId>commons-logging</artifactId>
  17. </exclusion>
  18. </exclusions>
  19. </dependency>
  20. <dependencies>

dependencies in pom.xml 相当于 项目的依赖包,启动的时候会去找,如果没有就去下载。

类似npm 的package.json dependency

dependency 里面的主要信息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, 也可:

http://oqln5pzeb.bkt.clouddn.com/17-7-29/90028337.jpg

http://oqln5pzeb.bkt.clouddn.com/17-7-29/90028337.jpg

mvn package

  1. compile 正常后,如果你用的archeType web-app,你可以打包到tomcat webapp目录去运行;其他的类似 譬如打包出jar

tomcat deploy

以一个archType 为web-app 的项目为例,mvn package 后, 除了上述的cp 到tomcat webapp 目录,

另外一种手动页面的部署方法:

localhost:8080 --> manage app

按要求输入用户名密码后,

http://oqln5pzeb.bkt.clouddn.com/17-7-29/84565023.jpg

在输入 locahost:8080/hello

则可以看到hello world 页面.

如果遇到403,请参考这里。

https://www.mkyong.com/tomcat/tomcat-default-administrator-password/

trouble sovling when mvn search not working

reindex maven project with Eclipse

  1. mvn tomcat:run
  2. mvn jetty:run

tomcat/jetty 是一些mvn plugin.

jetty 参考配置

所谓mvn plugin 可以理解成,这是使得可以集成与mvn 命令一起使用的插件。官方文档参考

Also:

mvn 可用编译,打包,安装,build项目

  • 编译:(nodejs 里面没有这个--因动态语言)

    mvn compile

compile 会下载dependency依赖。

  • 打包:(nodejs 里面没有这个--因动态语言)

    4.0.0

    org.springframework

    gs-maven

    jar

    0.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

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.mortbay.jetty</groupId>
  5. <artifactId>maven-jetty-plugin</artifactId>
  6. <version>6.1.26</version>
  7. </plugin>
  8. </plugins>
  9. <finalName>hello</finalName>
  10. </build>

常见的plugins

http://www.cnblogs.com/pixy/p/4977550.html

类似 npm clean , npm ,see npm --help

speed it up

mvn 经常很慢,等很久都没完成。参考以下

mvn -T 4 install -- will use 4 threads

从npm 角度理解 mvn 的 pom.xml的更多相关文章

  1. mvn 与 pom.xml

    mvn 安装 wget http://mirrors.hust.edu.cn/apache//maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.t ...

  2. 从Java角度理解Angular之入门篇:npm, yarn, Angular CLI

    本系列从Java程序员的角度,带大家理解前端Angular框架. 本文重点介绍Angular的开发.编译工具:npm, yarn, Angular CLI,它们就像Java在中的Maven,同时顺便介 ...

  3. (转载)从Java角度理解Angular之入门篇:npm, yarn, Angular CLI

    本系列从Java程序员的角度,带大家理解前端Angular框架. 本文是入门篇.笔者认为亲自动手写代码做实验,是最有效最扎实的学习途径,而搭建开发环境是学习一门新技术最需要先学会的技能,是入门的前提. ...

  4. 关于pom.xml的一些问题的理解

    最近在pom上出了一些问题,搞了一天才理解了一些问题,记录一下. 当在覆盖本地repository包之后,pom.xml上面出现了一个x. 当mvn->update project之后,还是有许 ...

  5. pom.xml配置,针对mvn clean install -P参数(环境参数)打包

    pom.xml配置,针对mvn clean install -P参数(环境参数)打包 比如你有2个环境,一个dev,一个prod, 然后你在mvn打包的时候,可以通过-P来打包,是打dev包,还是pr ...

  6. 037 关于pom.xml的一些问题的理解

    最近在pom上出了一些问题,搞了一天才理解了一些问题,记录一下. 当在覆盖本地repository包之后,pom.xml上面出现了一个x. 当mvn->update project之后,还是有许 ...

  7. pom.xml 如果使用 mvn exec:exec 命令运行项目

    pom.xml 如果使用 mvn exec:exec 命令运行项目,红色字体要与groupid相同 <project xmlns="http://maven.apache.org/PO ...

  8. mvn 用指定setting.xml 执行指定pom.xml

    mvn package -f pom.xml -s setting.xml clean install

  9. maven 依赖文件 pom.xml 编译 mvn compile 运行 不用mvn exec:java -Dexec.mainClass="hello.HelloWorld" 打成jar包 mvn package mvn install http://blog.csdn.net/yaya1943/article/details/48464371

    使用maven编译Java项目 http://blog.csdn.net/yaya1943/article/details/48464371  使用"mvn clean"命令清除编 ...

随机推荐

  1. ( 转) Awesome Image Captioning

    Awesome Image Captioning 2018-12-03 19:19:56 From: https://github.com/zhjohnchan/awesome-image-capti ...

  2. centos 打印机安装方法

    这里安装的是hplip 1.首先确定cups有没有安装 没有的话 yum install cups 安装 2.安装 hplip yum install -y hplip hplip-* 3执行 hp- ...

  3. 《Practical Vim》第十章:复制和粘贴

    第十章和第十一章讲了 Vim 的寄存器功能, 寄存器,是用于保存文本的特定的容器.它的内容: 既可以是类似于系统剪切板功能的,用于粘贴的文本 也可以是录制成的宏的命令. 第十章讲使用寄存器使用复制与粘 ...

  4. C# 关键字base用法

    1.调用基类的方法 public class A { public virtual void Hello() { Console.WiriteLine("Hello"); } } ...

  5. python __init__.py 的作用

    __init__.py的主要作用是: . Python中package的标识,不能删除 . 定义__all__用来模糊导入 . 编写Python代码(不建议在__init__中写python模块,可以 ...

  6. 2010-10-08在浏览器中兼容+jQuery3

    一.实现背景图片铺满(兼容各种浏览器) <script type="text/javascript"> $(document).ready(function() { $ ...

  7. IPFS初探

    背景:听说IPFS=bittorrent+bitcoin+git+afs,有可能取代http,好像厉害的不行,所以要研究一下. 编译参考:https://github.com/ipfs/go-ipfs ...

  8. css 常用布局

    「前端那些事儿」③ CSS 布局方案 我们在日常开发中经常遇到布局问题,下面罗列几种常用的css布局方案 话不多说,上代码! 居中布局 以下居中布局均以不定宽为前提,定宽情况包含其中 1.水平居中 a ...

  9. Python *Mix_w5

    1. 字典dict dict  用{}来表示 ,键值对数据{key:value}  key具有唯一性 键:都必须是可哈希的,除了列表,不可变的数据类型都可以当做字典中的键 值  没有任何限制 2. 字 ...

  10. 二十二. Python基础(22)--继承

    二十二. Python基础(22)--继承 ● 知识框架   ● 继承关系中self的指向 当一个对象调用一个方法时,这个方法的self形参会指向这个对象 class A:     def get(s ...