Maven 淺談(一)
Maven是一種project management工具。大致上來說,可以認為它是沒有圖形界面的IDE。你可以用它來編譯,打包,做成jar,war,ear.....
下載安裝之后,可以通過命令創建一個簡單的java項目
這里,archetype是maven的一個plugin,而create是這個plugin的一個goal
Maven一個麻煩的地方就是它有自己的目錄layout,大致是這樣的:
上面的命令會在com.sky.birds下面生成一個App.java,里面就是一個簡單的hello world程序
有了這個基本的框架之后,可以用
這里install是maven的一個lifecycle phase。maven的lifecycle phase包括process-resources, compile, process-classes, process-test-resources,
test-compile, test, prepare-package, package......
在maven的默認設置中,每個phase都附加了相應的plugin goal。而執行一個phase,意味著同時執行所有在它之前的phases
比方說,process-resources這個lifecycle phase,它對應的plugin goal是resources:resources;test,對應著 surefire:test;package,對應 jar:jar
當你執行 mvn install的時候,換成plugin就是
編譯好了應該可以運行那個hello world了,是這樣的:
mvn exec:java -Dexec.mainClass=com.sky.birds.App
要加參數?用 -Dexec.args=xxxx
項目建起來了,但真正寫代碼還是在eclipse里。把它import到eclipse里?杯具發生了:eclipse不認為那是一個java項目......
有個命令可以解決這個問題
然后就可以把它作為一個existing project,import到eclipse里了
順便說一下,建一個web項目類似于
下載安裝之后,可以通過命令創建一個簡單的java項目
mvn archetype:create -DgroupId=com.sky -DartifactId=birds -DpackageName=com.sky.birds
這里,archetype是maven的一個plugin,而create是這個plugin的一個goal
Maven一個麻煩的地方就是它有自己的目錄layout,大致是這樣的:
birds/pom.xml
/src/
/src/main/
/main/java/
/java/com/sky/birds
/src/test/
/test/java/
/src/
/src/main/
/main/java/
/java/com/sky/birds
/src/test/
/test/java/
上面的命令會在com.sky.birds下面生成一個App.java,里面就是一個簡單的hello world程序
有了這個基本的框架之后,可以用
mvn install
來編譯,并且打包成一個jar這里install是maven的一個lifecycle phase。maven的lifecycle phase包括process-resources, compile, process-classes, process-test-resources,
test-compile, test, prepare-package, package......
在maven的默認設置中,每個phase都附加了相應的plugin goal。而執行一個phase,意味著同時執行所有在它之前的phases
比方說,process-resources這個lifecycle phase,它對應的plugin goal是resources:resources;test,對應著 surefire:test;package,對應 jar:jar
當你執行 mvn install的時候,換成plugin就是
mvn resources:resources \
compiler:compile \
resources:testResources \
compiler:testCompile \
surefire:test \
jar:jar
compiler:compile \
resources:testResources \
compiler:testCompile \
surefire:test \
jar:jar
編譯好了應該可以運行那個hello world了,是這樣的:
mvn exec:java -Dexec.mainClass=com.sky.birds.App
要加參數?用 -Dexec.args=xxxx
項目建起來了,但真正寫代碼還是在eclipse里。把它import到eclipse里?杯具發生了:eclipse不認為那是一個java項目......
有個命令可以解決這個問題
mvn eclipse:eclipse
然后就可以把它作為一個existing project,import到eclipse里了
順便說一下,建一個web項目類似于
mvn archetype:create -DgroupId=com.mycompany.app \
-DartifactId=my-webapp \
-DarchetypeArtifactId=maven-archetype-webapp
-DartifactId=my-webapp \
-DarchetypeArtifactId=maven-archetype-webapp