Maven使用心得

4496 ワード

1.Maven個人使用履歴
私は06年からMavenに触れていましたが、その時はMaven+Subversionの組み合わせがいっぱい飛んでいて、耻ずかしくありませんでした.しかし、確かに使いやすいので、後続のプロジェクトでは基本的にMavenが使われています.簡単にmavenをまとめると、maven=buildツール+プロジェクト(jarパッケージ、依存)管理ツールと理解できます.
 
mavenといえばantを連想しますが、確かにこの二人の仕事は悪くありません.もちろんivy(大摩の同僚が紹介した)など、他にも知られていないものがたくさんあります.ここでは彼らの優略を議論しないで、いわゆる技術は身を押さないで、多く1つの道具を掌握するのは悪くありません.
 
2.MavenとCoC
Mavenの大きな特徴はCoCです(Convention over configuration,ruby on railsもこの理念に基づいている)、どういう意味ですか?あなたが守らなければならないルールをたくさん事前に規定していて、相談することはありません.CoCのメリットは、あなたが適応すれば、あなたは手間が省けます.あなたが適応しなければ、必ずカスタマイズしなければなりません.それは憂鬱です.しかし、世の中に絶対jはありません.の自由は?
 
3.Mavenのいくつかの重要な概念
mavenがインストールされていると仮定し、M 2_HOME変数(mavenインストールディレクトリを指す)が設定されています.PATHにも%M 2_HOME%binが追加されています.cmdで叩いてください.
mvn -version
必ずいくつかの行の情報が表示され、mavenとjavaのバージョンをヒントにします.
 
Mavenのプロファイル-settings.xmlは%M 2_HOME%confディレクトリの下にあります.ここにはすべてのmavenのプロファイル情報が集約されています.何か問題が発生したら、最初に確認するのはこのファイルです.
 
Repository--前述したように、mavenの大きな役割はjarパッケージ管理ですが、mavenはこれらのjarsをどこに隠していますか?答えはリポジトリ-repositoryです.Mavenのrepositoryはlocal repositoryとremote repositoryに分けられています.pom.xmlファイルにdependencyを指定すると、mavenがrepositoryでjarファイルを検索する順番はlocal repositoryです->remote repository.local repositoryデフォルトは~/.m 2/repositoryです.settings.xmlのでカスタマイズすることもできます.Remote repositoryデフォルトはhttp://repo1.maven.org/maven2/(ミラー:http://mirrors.ibiblio.org/pub/mirrors/maven2/)ああ、もちろんsettings.xmlで指定することもできます.また、一般的なプロジェクトの実践では、企業範囲内のrepositoryを構成する必要があります.jarsはすべてこのリポジトリからしか取得できません.一般的には外部のリポジトリに接続することはできません.
4.MavenとJavaプロジェクト
2つのケースに分けられます:1、素手で起業します;2、すでに既成のprojectがcvs/svnの中にあります.
素手で起業する:
pom.xmlとディレクトリ構造を別の場所からコピーして変更することもできます.あるいは、mvnが提供したテンプレートでプロジェクトを生成することもできます.テンプレートには多くの種類があります.最も簡単なコマンドは:
mvn archetype:create -DgroupId=com.maven -DartifactId=test_project
既存のソースコード:
ソースコードチェックアウトを外した後、Eclipseにmavenプラグインがインストールされている場合(プラグインをインストールした後、Window->Perferences->Mavenに必要な設定を行う必要があります.最も重要なのはInstallationsの「User Settings」と「Local Repository」の2つです.正しいことを確認するために)、これらのプロジェクトを直接maven projectで行うことができます.(pom.xmlファイルがあればOK)という方法でインポートします.もちろんインポートする前に、コマンドラインの下で「mvn clean install-DeskipTests」コマンドを実行して、これらのプロジェクトがコンパイル可能であることを確認したほうがいいです.インポート後、srm/main/javaなどのインポートに成功していないことに気づいたら、インポート中にエラーが発生したことを示します.(pom.xml自体にエラーがある場合はfixを先にしたり、上記のコマンドを走ったりする必要があります)簡単で、プロジェクトdeleteを再インポートして、一般的に問題を解決することができます.
もしあなたがmavenプラグインをインストールしていないか、それを使うのが好きではない場合(私の多くの同僚はEclipseのmavenプラグインを使うのが好きではありません.遅いと問題になりやすいと思います)、次のコマンドを使用します.
mvn eclipse:clean eclipse:eclipse(もちろんこのコマンドを使用する場合、生成された.classpathファイルに変数M 2_REPOが使用されますが、次のインポート前にEclipseでこの変数を設定し、ローカルのrepositoryを指す必要があります)
まず、通常のjavaプロジェクトとして生成し、Eclipseで他のjavaプロジェクトと同じようにインポートします.cvs/svnからcheckoutしたsourcecodeに.projectと.classpathファイルが含まれている場合は、上のコマンドを実行する必要がありますか?もう一度実行したほうがいいという人もいます.そして、.project/.cはずっとお勧めしていません.lasspathのような非元のcode(すなわち、別のファイルから生成され得る)は、バージョン制御に組み込まれる.
Mavenプロジェクト階層:
一般的に大きなプロジェクトは、1つのmaven projectしかありません.この場合、これらのmaven projects間の階層を管理する必要があります.一般的に一般的な方法はparent maven projectを作成することです.その後、他のプロジェクトをそのサブプロジェクトとして管理しやすくします.
 
 

.
 |-- my-module
 |   `-- pom.xml
 `-- pom.xml
これによりparent projectのpom.xmlに定義が表示され、各moduleはディレクトリ名に対応しています.parent pom.xmlでは共通の依存、propert、build pluginのカスタマイズなどを定義できます.また、Eclipseでmaven projectをインポートするときにこのparent pom.xmlを直接選択することができます.のサブプロジェクトが自動的にインポートされます.
 
5.Dependencyの詳細
mavenではjarの参照は非常に簡単で、pom.xmlにdependencyを1つ加えるだけでいいです.しかし、実際には落とし穴がたくさんあるので、注意が必要です.
第一に、このversionです.私たちの普段の一般的な書き方はこうです.
 
6.Mavenとプロジェクトの配置
mavenを導入する前にshell scriptを使ったことを覚えています.mavenは簡単だと思います.
主なステップは次のとおりです.
mvn scm pluginを使用してcvs/svnからcheckout source codeを生成し、Maven Assembly Pluginを使用してsource treeを組み立てて最終的なパブリケーションファイルを生成します.もちろん、専門的にdstreamまたはrpmファイルを生成します.簡単な方法はzipファイルを生成し、直接圧縮すればいいです.
もちろん、この中にはいくつかのファイルのコピーが含まれている可能性があります.maven resources pluginを使用する必要があります.
 
How to share resources across projects in Maven: http://www.sonatype.com/people/2008/04/how-to-share-resources-across-projects-in-maven/
ここでは、私たちの実際のプロジェクトを例に具体的に説明します.
 
7.MavenとJarファイルの公開
自分のjarパッケージを会社のrepositoryにパブリッシュする必要がある場合があります.プロジェクトがパブリッシュされるときや他のプロジェクトが使用できるように、mavenのコマンドを使用してdeployに行くことができます.もちろん、一般的なrepository serverには対応するweb管理インターフェースがあります.そこでdeploy jarをdeployし、groupId、artifactid、versionの3つのパラメータを設定することができます.はい.注意しなければならないのは、既存のjarでいくつかのクラスを変更してdeployにアップロードした場合、上記の3つのパラメータを設定して、置き換えるjarを区別する必要があります.