開発支援ツール

Java関連開発ツール

基本的な用語

  • ビルドライフサイクル
    • 以下の3つがある
      • clean: ビルドした成果物を削除する
      • default: デプロイまでを行う
      • site: サイトドキュメントを生成する
    • 各ライフサイクルは複数のフェーズで構成される
    • Mavenのビルドライフサイクル 2019.1
  • フェーズ
    • defaultライフサイクルのフェーズの例:validate,initialize,compile,test-compile,test,package,verify,install,deploy
  • ゴール…各プラグインが持つ特定の処理(をその目的で表現したもの?)。1つのプラグインが複数のゴールを持つことがある
  • アーキタイプ…プロジェクトをひな形から自動生成する仕組み
  • Nexus…プライベートなリモートリポジトリを構築するのに使えるOSSのリポジトリサーバ

POM

  • POM…Project Object Modelの略。Maven の設定を持つXMLファイル。
  • POMは複数のファイルで親子関係を持てる。
    • 最上位のPOM を Super POM と呼ぶ。子POMに無い情報は親POMから引き継がれる
  • GAV情報…Mavenで管理するプロジェクト情報の基本的な要素。グループ、アーティファクト、バージョン
    • グループID…プロジェクトが属する組織や上位プロジェクト
    • アーティファクトID…プロジェクトを識別する名前
    • バージョン
  • グループ+アーティファクトでプロジェクトが特定され、さらにバージョンで断面を特定する。
  • バージョンは開発中バージョン(SNAPSHOT)とリリースバージョン(SNAPSHOT以外)に分かれる。
    • バージョン番号につけるサフィックス-SNAPSHOTは「開発中であり、今後内容が変わる可能性がある」ことを表す
    • SNAPSHOTがついていないものはリリース版であり、基本的には変更されないことを表す
    • SNAPSHOT云々は慣例であって、システム的に制限があるわけではない
  • プロジェクトの完全修飾名… <groupId>:<artifactId>:<version>
  • 親子関係をマージ後のPOM(実効POM)は maven-help-plugin の effective-pom ゴールを指定するとみられる。
  • 依存関係の定義を親にまとめるには、 <dependencyManagement> を使用する
  • プロジェクトを集約するには、集約元となるプロジェクトで <modules> を使用する
  • maven-dependency-plugin の tree ゴール を実行すると、この推移的な依存関係を含めたすべての依存関係をツリー構造のグラフで確認できる
    mvn dependency:tree
  • ビルド環境によって pom.xml の内容を切り替えたい(特定のプラグインを有効にしたり、設定値を変更したり)場合に、プロファイル(Profile)という仕組みが使える
    • プロファイルごとに、プロパティや依存関係、 project.build.directory の設定を変えられる。
    • JDKのバージョンやOSを条件にプロファイルを切り替えることができる
    • mvn help:all-profiles で使えるプロファイルが見られる

依存関係とスコープ

  • Mavenの依存範囲
  • Mavenのscopeに何を書いたら良いのかわからなかったので調べてみた 2019.12
  • 依存関係にはスコープを設定できる。スコープとは、その依存関係を使用する範囲
  • compile スコープに指定されている依存関係は、ソースコードをコンパイルするときからアプリケーションを実行するときまで、常に使用することを表している
  • test スコープが指定されている依存関係は、テストコード(src/test/java)のコンパイルとテストの実行時にだけ使用することを表している
  • スコープは、次の6種類存在する
       compile
       provided
       runtime
       test
       system
       import

Tips

  • Mavenで差分コンパイルできない 2019
    • <useIncrementalCompilation>false</useIncrementalCompilation> を設定することで、本来この機能に期待されている *賢い* インクリメンタルコンパイルが行われなくなる。 (この賢いインクリメンタルコンパイル機能がバグっているため、全ファイル変更されたと見なされているのが現状。)
  • Setting.xml
    • Eclipseの場合、デフォルトでは下記の場所にある。(Preference参照)
    • C:\Users\<UserName>\.m2
    • コンソール版では conf フォルダの下にあります。
  • コンパイラ準拠に関するエラーが出る場合 2021.11
    • コンパイラ準拠問題.png
      指定されたコンパイラー準拠は 1.5 ですが、JRE 17 が使用されています
      ビルド・パスは実行環境 J2SE-1.5 を指定しています。この環境と厳密に互換性のあるワークスペースにインストールされた JRE がありません。 
    • pomに下記のような設定をすると消える (Maven超入門より)ワーニングなので無視してもよい
      <properties>
              <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
              <java.version>1.8</java.version>
      </properties>
      
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          < artifactId>maven-compiler-plugin</artifactId>
          <version>3.6.1</version>
              <!-- ここでJavaのバージョンを設定する -->
          <configuration>
              <source>${java.version}</source>
              <target>${java.version}</target>
          </configuration>
      </plugin> 	

入門・参考になる記事

  • Maven解説
    • Maven は Project Object Model (POM) という考え方に基づき、プロジェクトのビルド、テスト、ドキュメンテーション、成果物の配備など、プロジェクトのライフサイクル全体を管理します。プロジェクトのビルドツールである Ant とは異なり、Maven はプロジェクト管理ツールとして、プロジェクトに関する色々な情報を POM に集約し、POM の情報に基づきプロジェクト全体を管理します。
    • プロジェクトの依存するライブラリの管理。
    • プロジェクト情報の配信。(サイトの作成、配備やユニットテストのレポートなど)
    • プロジェクトの作成からコンパイル、テスト、パッケージング、配備などのプロジェクトのライフサイクルに含まれる各タスクの支援。
  • Maven入門
    • リモートリポジトリとローカルリポジトリは、どちらもプラグインやライブラリが置かれる場所です。 Maven は必要なプラグインやライブラリをリモートリポジトリからダウンロードし、それをローカルリポジトリに保存します。そして、各プロジェクトはローカルリポジトリに保存されているライブラリを参照します。この仕組みによって、ローカル環境にある全てのプロジェクトの間でライブラリを共有することができます。

公式


添付ファイル: fileコンパイラ準拠問題.png [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-11-08 (月) 15:44:40 (28d)