從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。
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 目錄,
另外一種手動頁面的部署方法:
按要求輸入用戶名密碼後,
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 npm --help
speed it up
mvn 經常很慢,等很久都沒完成。參考以下鏈接
mvn -T 4 install -- will use 4 threads
從npm 角度理解 mvn 的 pom.xml