POM.xml 設定
這裡選擇左邊的POM Reference,右邊的5個紅框會對應下面的5個紅框
※dependencies
依賴就是說我寫了一支程式,有用到spring-core裡的東西,那就表示我這支程式依賴spring-core,如果我取得不到spring-core,那這支程式當然有問題mvn dependency:list 可看目前的依賴
mvn dependency:tree 可看依賴的樹狀結構
一般要下載某些jar檔,都是到MVN Repository去搜尋的
scope
scope 預設是 compile.compile:編譯、測試、執行都有效,一般都用這個
.test:測試有效,上一篇建出來的JUnit就是這一個
.provided:類似 compile,但打包時不包括,如servlet-api
.runtime:測試、執行有效,如JDBC的driver,因為是廠商提供的,不需要編譯
.system:類似 provided,但 jar 檔是系統路徑,所以還要設定<systemPath>自己從系統提供 jar 檔
.system:類似 provided,但 jar 檔是系統路徑,所以還要設定<systemPath>自己從系統提供 jar 檔
.import:只能用在 dependencyManagement 裡的 dependency,maven 只能有一個 parent 標籤,也就是只能有一個父 pom,加這個表示此 dependency 自己會去抓,不會抓 parent 的檔案
可以設定哪些檔案不要加入,搜尋exclusions,然後複製貼上即可
exclusions
排除依賴可以設定哪些檔案不要加入,搜尋exclusions,然後複製貼上即可
※properties
1.可以用${env.xxx}取得環境變數,如${env.JAVA_HOME}
想知道其他屬性要切到pom.xml的路徑,然後下mvn help:system,但要小心help:system裡面不能有空格
2.可以用${project.xxx}取得POM裡的屬性,如${project.version}
如果路徑有父子關係,如<build><sourceDirectory>xxx</sourceDirectory></build>
可以用「.」隔開,如${project.build.sourceDirectory}
3.可以用${settings.xxx},取得的是settings.xml裡資料,如${settings.localRepository}
4.在java印出java.lang.System.getProperties().list(System.out)可以取得java系統屬性
如:${java.home}、${file.separator}…等
想知道其他屬性要切到pom.xml的路徑,然後下mvn help:system,但要小心help:system裡面不能有空格
2.可以用${project.xxx}取得POM裡的屬性,如${project.version}
如果路徑有父子關係,如<build><sourceDirectory>xxx</sourceDirectory></build>
可以用「.」隔開,如${project.build.sourceDirectory}
3.可以用${settings.xxx},取得的是settings.xml裡資料,如${settings.localRepository}
4.在java印出java.lang.System.getProperties().list(System.out)可以取得java系統屬性
如:${java.home}、${file.separator}…等
5.如果以上都沒有適合的,那就自己定變數了,可以亂打
如<xxx.ooo>UTF-8</xxx.ooo>
如<xxx.ooo>UTF-8</xxx.ooo>
要用變數的值時,就用${xxx.ooo}就會得到UTF-8了
這時就要有一些設定才能抓的到
我是自己隨便寫一隻java,然後打包成jar檔,重點就是已經有jar檔了,才能如下的設定
我用Enter看起來好看些,但執行時要用空格分開
mvn install:install-file
-Dfile=D:/xxx.jar
-DgroupId=abc
-DartifactId=def
-Dversion=2
-Dpackaging=jar
執行時,因為我的-Dfile是用絕對路徑,所以在哪個路徑下指令都沒有關係,成功後會在.m2\repository\abc\def\2看到def-2.jar
然後mvn package會build fail
此時在pom.xml的dependencies下加上如下的設定,local repository有個pom檔,可拿來複製
※這些資訊都是剛剛的GAV,因為是自己設的,所以一定會知道
※再次執行mvn package,就會發現build success了
※要執行可以用java -cp ...\xxx.jar;...\ooo.jar ooo.xxx.App
就是上面放到local repository那一頁,有個maven-install-plugin
※其實也就比剛剛多了-DlocalRepositoryPath而已
我將路徑打成以下的樣子
mvn install:install-file
-Dfile=D:/xxx.jar
-DgroupId=abc
-DartifactId=def
-Dversion=2.2
-Dpackaging=jar
-DlocalRepositoryPath=hahaha
※執行好會在pom.xml那一層和local repository出現hahaha(注意要在pom.xml那層執行)
※想執行pom檔也要複製,執行mvn package會發現build fail,因為local repository並沒有產生hahaha,所以還得在pom.xml和dependencies同層增加上如下的設定:
※id隨便打,因為我不打,它有提示
※此時mvn package會發現build success
※執行可用java -cp C:\Users\bruce_java\testMaven\p1.p2\hahaha\abc\def\2.2\def-2.2.jar;
target\p1.p2-1.jar ooo.xxx.App
※第三方jar檔
大部分都可以在上面講的MVN Repository下載到jar檔,但有一些沒辦法,如微軟的SQL Server這時就要有一些設定才能抓的到
我是自己隨便寫一隻java,然後打包成jar檔,重點就是已經有jar檔了,才能如下的設定
※將第三方jar檔放到local repository
※第一步
這裡左邊選中的是Index(category),其中有個第三方jar到Local Repository我用Enter看起來好看些,但執行時要用空格分開
mvn install:install-file
-Dfile=D:/xxx.jar
-DgroupId=abc
-DartifactId=def
-Dversion=2
-Dpackaging=jar
執行時,因為我的-Dfile是用絕對路徑,所以在哪個路徑下指令都沒有關係,成功後會在.m2\repository\abc\def\2看到def-2.jar
※第二步
在上一篇的App.java寫一些import這一支的程式碼然後mvn package會build fail
此時在pom.xml的dependencies下加上如下的設定,local repository有個pom檔,可拿來複製
<dependency> <groupId>abc</groupId> <artifactId>def</artifactId> <version>2</version> </dependency>
※這些資訊都是剛剛的GAV,因為是自己設的,所以一定會知道
※再次執行mvn package,就會發現build success了
※要執行可以用java -cp ...\xxx.jar;...\ooo.jar ooo.xxx.App
※將第三方jar檔放到pom.xml那層
指令如下方法找就是上面放到local repository那一頁,有個maven-install-plugin
※其實也就比剛剛多了-DlocalRepositoryPath而已
我將路徑打成以下的樣子
mvn install:install-file
-Dfile=D:/xxx.jar
-DgroupId=abc
-DartifactId=def
-Dversion=2.2
-Dpackaging=jar
-DlocalRepositoryPath=hahaha
※執行好會在pom.xml那一層和local repository出現hahaha(注意要在pom.xml那層執行)
※想執行pom檔也要複製,執行mvn package會發現build fail,因為local repository並沒有產生hahaha,所以還得在pom.xml和dependencies同層增加上如下的設定:
<repositories> <repository> <id>zzz</id> <url>file://${project.basedir}/hahaha</url> </repository> </repositories>
※id隨便打,因為我不打,它有提示
※此時mvn package會發現build success
※執行可用java -cp C:\Users\bruce_java\testMaven\p1.p2\hahaha\abc\def\2.2\def-2.2.jar;
target\p1.p2-1.jar ooo.xxx.App
沒有留言:
張貼留言