从npm 角度理解 mvn 的 pom.xml

Posted no7dw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从npm 角度理解 mvn 的 pom.xml相关的知识,希望对你有一定的参考价值。

从npm 角度理解 mvn 的 pom.xml

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

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

类似 node.js 的 package.json
mvn 与 npm 也是有雷同的地方。


<dependencies>

    <!-- Unit Test -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
    </dependency>

    <!-- Spring Core -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
<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

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

mvn tomcat:run 
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

  <build>
  <plugins>
  <plugin>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>maven-jetty-plugin</artifactId>
      <version>6.1.26</version>
  </plugin>
  </plugins>
<finalName>hello</finalName>
</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的主要内容,如果未能解决你的问题,请参考以下文章

从一个命令运行多个 pom 文件

在 mvn deploy 之前将变量值应用于 Pom.xml [关闭]

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

检查 pom.xml 以符合 github 页面的 mvn site 命令

如何使用 mvn -f 打包 pom.xml 在文件夹树中存在两个文件夹?

为啥 Maven 命令“mvn sonar:sonar”在我的“pom.xml”中没有任何插件配置就可以工作?