mavenでのparentとdependencyManagement
3931 ワード
今日はmavenのpomについてお話しします.xmlファイルのparent、dependencyManagementラベル.
まずparentラベルといえば、実はこれは説明しにくくなくて、父の意味で、pomも継承しています.例えば私は今A、B、C、AがB、Cの父級を持っています.今はBがありますが、Cにはjarが共通していることがたくさんあります.実は親プロジェクトに入れることができます.そうすれば、B、CにAを継承させると管理が便利になります.
サブモジュールの書き方は次のとおりです.
今dependencyManagementラベルについて話しますが、実はこれもよく理解しています.例えば、あなたのAプロジェクトpomファイルの内容は以下の通りです.
dependencyManagementラベルで囲まれたjarでは、B、Cは継承されていません.つまり、自動的に導入されません.サブプロジェクトに表示される依存を宣言して親プロジェクトを導入することができます.
のjar(version,scopeを指定する必要はありません).parentラベルは親プロジェクトに依存し、サブプロジェクトが自動的に導入されます.これも両者の違いです.
つまり、B、CがAのjarを引用したい場合、dependencyManagementのjarは、B、Cに直接ラベルを書くのは役に立たず、自動的に導入されません.
控訴する親Aのjavaxを引用したい場合は.mail-apiラックパッケージ、また書き直します(ラベルは書かなくてもいいです).
何の意味があるんだ?どうして直接全部引用しないのですか.ここでは、例えばB、CにはAのjarの大部分が必要ですが、jar B、Cの一部があります.
いいえ、B、Cはjarを必要としません.まだ違うかもしれません.この場合、dependencyManagementラベルを選択する必要があります.
もう一つ説明したいのは、dependencyManagementを親子関係で使う必要はありません.これは重要です.例えば私はBプロジェクトにいて、親プロジェクトを引用しないで、私はBの中でdependencyManagementを引用します.
ラベルも可能です.以下のようにします.
まとめ:
pomファイルではjarのバージョン判断には2つの方法があります
1つ目は最も一般的なdepenencyにversionを書くことです
2、第1種でなければ、mavenは自分のpomファイルや親pomにartifactidとgroupidのバージョンを明記しているかどうかを探し、あればそのバージョン番号を持って、間違っていないと報告します.
3、両方とも書き間違えた場合は、1つ目は2つ目をカバーします.
まずparentラベルといえば、実はこれは説明しにくくなくて、父の意味で、pomも継承しています.例えば私は今A、B、C、AがB、Cの父級を持っています.今はBがありますが、Cにはjarが共通していることがたくさんあります.実は親プロジェクトに入れることができます.そうすれば、B、CにAを継承させると管理が便利になります.
サブモジュールの書き方は次のとおりです.
com.lala
my-parent
0.0.1
今dependencyManagementラベルについて話しますが、実はこれもよく理解しています.例えば、あなたのAプロジェクトpomファイルの内容は以下の通りです.
4.0.0
com.lala
my-parent
0.0.1
pom
UTF-8
junit
junit
4.11
test
redis.clients
jedis
2.4.0
provided
javax.mail
javax.mail-api
1.5.3
provided
org.apache.maven.plugins
maven-compiler-plugin
3.3
1.8
1.8
true
dependencyManagementラベルで囲まれたjarでは、B、Cは継承されていません.つまり、自動的に導入されません.サブプロジェクトに表示される依存を宣言して親プロジェクトを導入することができます.
のjar(version,scopeを指定する必要はありません).parentラベルは親プロジェクトに依存し、サブプロジェクトが自動的に導入されます.これも両者の違いです.
つまり、B、CがAのjarを引用したい場合、dependencyManagementのjarは、B、Cに直接ラベルを書くのは役に立たず、自動的に導入されません.
控訴する親Aのjavaxを引用したい場合は.mail-apiラックパッケージ、また書き直します(ラベルは書かなくてもいいです).
何の意味があるんだ?どうして直接全部引用しないのですか.ここでは、例えばB、CにはAのjarの大部分が必要ですが、jar B、Cの一部があります.
いいえ、B、Cはjarを必要としません.まだ違うかもしれません.この場合、dependencyManagementラベルを選択する必要があります.
もう一つ説明したいのは、dependencyManagementを親子関係で使う必要はありません.これは重要です.例えば私はBプロジェクトにいて、親プロジェクトを引用しないで、私はBの中でdependencyManagementを引用します.
ラベルも可能です.以下のようにします.
// , jar
org.springframework //jar
spring-core
3.2.7 //
// jar
org.springframework
spring-core // version ,
まとめ:
pomファイルではjarのバージョン判断には2つの方法があります
1つ目は最も一般的なdepenencyにversionを書くことです
2、第1種でなければ、mavenは自分のpomファイルや親pomにartifactidとgroupidのバージョンを明記しているかどうかを探し、あればそのバージョン番号を持って、間違っていないと報告します.
3、両方とも書き間違えた場合は、1つ目は2つ目をカバーします.