Apache Maven のpom.xmlって何のためにあるのかってよく分かってなかったので。Project Object Model って概念らしい

Maven~!ってのを、ずっと「マーヴィン」と読むんだと思っていました、どうもボクです。「マーヴィン・ゲイ」とは何の関係もありません。

 

yomikata.org 

ryoichi0102.hatenablog.com

⇧  上記サイト様によりますと、「メイヴェン」が多数派ですかね。

 

Apache Maven(アパッチ メイヴン/メイヴェン)は、Java用プロジェクト管理ツールである。Apache Antに代わるものとして作られた。Apacheライセンスにて配布されているオープンソースソフトウェアである。

Apache Maven - Wikipedia

Wikipedia先生も、メイヴェン推しですね。

2019年4月現在、Maven 1.0 から Maven 3.0 までバージョンがあるみたいです。 

 

一応、Apache Mavenが誕生した経緯

ちょこっと読んでみました。

Introduction

Maven, a Yiddish word meaning accumulator of knowledge, began as an attempt to simplify the build processes in the Jakarta Turbine project. There were several projects, each with their own Ant build files, that were all slightly different. JARs were checked into CVS. We wanted a standard way to build the projects, a clear definition of what the project consisted of, an easy way to publish project information and a way to share JARs across several projects.

http://maven.apache.org/what-is-maven.html

⇧  イディッシュ語で、「知識の蓄積」を意味するらしい。 

Ant っていうJava用プロジェクト管理ツールでJavaプロジェクト管理してたんだけども、しんどいっすわ...ってことで、

The result is a tool that can now be used for building and managing any Java-based project. We hope that we have created something that will make the day-to-day work of Java developers easier and generally help with the comprehension of any Java-based project.

http://maven.apache.org/what-is-maven.html

⇧ Maven完成に至ったそうです。

 

objectclub.jp

⇧  上記サイト様が詳しいです。 

 

POM(Project Object Model)の概念って?

Apache Mavenは、POM(Project Object Model)って概念に基づいているらしいのですが、Project Object Model って何ぞや?

ossforum.jp

www.techscore.com

www.ibm.com

⇧  上記サイト様によりますと、Javaのプロジェクト自体をオブジェクトとして考えて管理していこうってことらしいです、たぶん。

 

 

pom.xml って、結局、何ですか?

まぁ、何ていうか、結局、pom.xml って何なんすかね? 

www.techscore.com

pom.xml はプロジェクトに関する情報を持つ重要なファイルです。 例えば、プロジェクトのビルドに関する情報や、依存するライブラリの情報、プラグインの設定などが含まれます。

2. Maven 入門 (2) | TECHSCORE(テックスコア)

⇧  上記サイト様によりますと、pom.xmlJavaのプロジェクトを管理していくんだと。

だが、しかし!

Mavenの生い立ちからもわかるように、POMはオープンソースプロジェクトを意識したモデルになっています。そのため、実際のシステム開発におけるプロジェクトの全情報がPOMに定義されているかというと、残念ながらそうではありません。Mavenはプロジェクトにとっての、万能薬にはなりませんが、問題を浮き上がらせる試験薬、あるいは問題の防止をする予防薬としては十二分な力を秘めています。

- 第1回 Mavenって何?

⇧  上記サイト様によりますと、プロジェクトの全情報が載ってるわけではないと...将棋で言ったら、飛車角落ち みたいな?(飛車角落ちって、正式には、「二枚落ち」って言うそうですね[将棋の手合割 - Wikipedia])

まぁ、何が言いたいかというと、 POM(Project Object Model)って概念が pom.xml にすべて集約されてるわけじゃないのねってことですかね...結局よく分からん。

 

pom.xmlでライブラリをインストールしてみる

pom.xml に記載されてる情報を基に、ローカルリポジトリJavaの外部ライブラリをインストールできるらしい 。

それには、JavaMaven がインストールされてる必要がありますが。

Windowsへのインストールの場合は、

qiita.com

Macへのインストールの場合は、

qiita.com

⇧  上記サイト様が参考になりそうです。

 

今回は、SVNも使ってます。gitでも問題ないかと。なんらかのバージョン管理ツールがインストールされてればOKかと。GitHubから普通にダウンロードする場合は、バージョン管理ツールなくてもOKです。

というわけで、ちょっと前に、セキュリティ脆弱性で話題になった、nablarch っていうJavaフレームワークのライブラリを使えるようにしてみたいと思います。

www.security-next.com

⇧  一応、最新バージョンの5u14で脆弱性について対応されてるらしいですが...

 

github.com

⇧  上記サイト様にアクセスし、「Clone or download」で表示されるURLをコピー。

f:id:ts0818:20190406122132p:plain

そしたらば、適当な場所に、プロジェクト用のディレクトリを作成し、ディレクトリの中で右クリックし「SVN チェックアウト(K)...」で。

f:id:ts0818:20190406122646p:plain

リポジトリのURLに、コピーしておいたURLを張り付けで。チェックアウト先のディレクトリに、作成したディレクトリを指定し「OK」で。

f:id:ts0818:20190406122839p:plain

SVNの場合、チェックアウトされればOK。

f:id:ts0818:20190406122920p:plain

ローカル環境にリモートリポジトリの内容がインストールされています。

f:id:ts0818:20190406123149p:plain

今回は、trunk に用意されてた pom.xml を利用したいと思います。

f:id:ts0818:20190406123439p:plain

 

そんでは、コマンドプロンプトで、使用したい pom.xml のあるディレクトリまで移動してから、

mvn install

f:id:ts0818:20190406124724p:plain

f:id:ts0818:20190406125920p:plain

そうすると、コマンドプロンプトで表示されてるインストール先に、ライブラリがインストールされます。

f:id:ts0818:20190406130032p:plain

⇧  nablarch に関するライブラリは、「C:\Users\[ユーザー名]\.m2\repository\com\nablarch」ってフォルダにまとまってる感じっすかね、ほかはnablarch とは関係ないライブラリっぽい...まぁ、このへんは、記載されてるpom.xmlの情報に左右される感じでしょうかね...。


んでは、Javaプロジェクトの雛型を作成します。

maven.apache.org

⇧  「mvn archetype:generate」コマンドでいけるのですが、

Define value for groupId: : 
Define value for artifactId: : 
Define value for version: : 
Define value for package: :     

⇧  の内容の入力を求められるので、「groupId」「artifactId」は、pom.xml に記載の内容と被らないようにする必要がある感じですかね。

ちなみに、mvn create コマンドは非推奨になったそうです、たぶん使ったことないけども...時の流れ~。

そんでは、ポチっとな。

f:id:ts0818:20190406142658p:plain



ここは、デフォルトの状態でEnterキー押下で。つまり、何も入力せずEnterキー押下。 

f:id:ts0818:20190406134237p:plain

同じく、デフォルトの状態でEnterキー押下で。つまり、何も入力せずEnterキー押下。  

f:id:ts0818:20190406134330p:plain

ここは、「groupId」「artifactId」を入力し、Enterし、yを入力しEnterで。

f:id:ts0818:20190406151601p:plain

作成されました。

f:id:ts0818:20190406151634p:plain

 

雛型ができたようです。

f:id:ts0818:20190406151703p:plain

そしたら、コンパイルで。

f:id:ts0818:20190406151818p:plain

f:id:ts0818:20190406151905p:plain

Eclipseを使う場合は、以下を実施したほうが良いようです。

f:id:ts0818:20190406151957p:plain

f:id:ts0818:20190406152049p:plain

そんでは、Eclipseでプロジェクトをインポートしていきます。

まずは、Eclipseを起動で。

f:id:ts0818:20190406135528p:plain

「ファイル(F)」>「インポート(I)...」で。

f:id:ts0818:20190406135705p:plain

「一般」>「既存 プロジェクトをワークスペースへ」で。「次へ(N) >」。

f:id:ts0818:20190406152733p:plain

「参照(B)...」で、

f:id:ts0818:20190406152844p:plain

自分の場合ですと、「C:\Users\Toshinobu\Desktop\mavenTestProject\trunk\」ディレクトリを選択。

f:id:ts0818:20190406154938p:plain



「完了(F)」で。

f:id:ts0818:20190406154848p:plain

インポートされました。

f:id:ts0818:20190406155054p:plain

mvn install したライブラリが参照されとらんのだが...

 

qiita.com

web-dev.hatenablog.com

⇧  上記サイト様によりますと、上位のpom.xmlの内容を、下位のpom.xml(今回「mvn archetype:generate」コマンドで作成されたほうのやつ)に張り付ける必要があるらしい。

変更前。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.ts0818</groupId>
  <artifactId>ts0818Project</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>ts0818Project</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

変更後。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.ts0818</groupId>
  <artifactId>ts0818Project</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>ts0818Project</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-core</artifactId>
        <version>1.4.1</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-core-applog</artifactId>
        <version>1.0.2</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-core-beans</artifactId>
        <version>1.3.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-core-dataformat</artifactId>
        <version>1.2.2</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-core-jdbc</artifactId>
        <version>1.4.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-core-message</artifactId>
        <version>1.1.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-core-repository</artifactId>
        <version>1.3.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-core-transaction</artifactId>
        <version>1.1.3</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-core-validation</artifactId>
        <version>1.1.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-core-validation-ee</artifactId>
        <version>1.1.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-etl</artifactId>
        <version>1.2.1</version>
      </dependency>

      <!-- fw -->
      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-fw</artifactId>
        <version>1.2.1</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-fw-batch</artifactId>
        <version>1.2.2</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-fw-batch-ee</artifactId>
        <version>1.3.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-fw-jaxrs</artifactId>
        <version>1.0.3</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-fw-messaging</artifactId>
        <version>1.1.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-fw-messaging-http</artifactId>
        <version>1.0.3</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-fw-messaging-mom</artifactId>
        <version>1.0.3</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-fw-standalone</artifactId>
        <version>1.3.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-fw-web</artifactId>
        <version>1.5.1</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-fw-web-dbstore</artifactId>
        <version>1.0.4</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-fw-web-extension</artifactId>
        <version>1.0.1</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-fw-web-hotdeploy</artifactId>
        <version>1.0.1</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-fw-web-tag</artifactId>
        <version>1.1.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-mail-sender</artifactId>
        <version>1.4.1</version>
      </dependency>

      <!-- common -->
      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-common-auth</artifactId>
        <version>1.1.1</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-common-auth-jdbc</artifactId>
        <version>1.0.1</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-common-code</artifactId>
        <version>1.2.1</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-common-code-jdbc</artifactId>
        <version>1.0.1</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-common-dao</artifactId>
        <version>1.5.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-common-databind</artifactId>
        <version>1.2.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-common-date</artifactId>
        <version>1.0.1</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-common-encryption</artifactId>
        <version>1.1.1</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-common-exclusivecontrol</artifactId>
        <version>1.1.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-common-exclusivecontrol-jdbc</artifactId>
        <version>1.0.1</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-common-idgenerator</artifactId>
        <version>1.0.1</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-common-idgenerator-jdbc</artifactId>
        <version>1.0.1</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-common-jdbc</artifactId>
        <version>1.1.1</version>
      </dependency>

      <!-- misc -->
      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-backward-compatibility</artifactId>
        <version>1.1.0</version>
      </dependency>

      <!-- Nablarch Testing Framework -->
      <dependency>
        <groupId>com.nablarch.framework</groupId>
        <artifactId>nablarch-testing</artifactId>
        <version>1.2.0</version>
      </dependency>

      <!-- toolbox -->
      <dependency>
        <groupId>com.nablarch.tool</groupId>
        <artifactId>nablarch-toolbox</artifactId>
        <version>1.0.2</version>
      </dependency>

      <!-- デフォルト設定ファイル -->
      <dependency>
        <groupId>com.nablarch.configuration</groupId>
        <artifactId>nablarch-main-default-configuration</artifactId>
        <version>1.1.1</version>
      </dependency>
      <dependency>
        <groupId>com.nablarch.configuration</groupId>
        <artifactId>nablarch-testing-default-configuration</artifactId>
        <version>1.1.0</version>
      </dependency>

      <!-- アダプター -->
      <dependency>
        <groupId>com.nablarch.integration</groupId>
        <artifactId>nablarch-router-adaptor</artifactId>
        <version>1.1.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.integration</groupId>
        <artifactId>nablarch-jersey-adaptor</artifactId>
        <version>1.0.3</version>
      </dependency>
      <dependency>
        <groupId>com.nablarch.integration</groupId>
        <artifactId>nablarch-resteasy-adaptor</artifactId>
        <version>1.0.3</version>
      </dependency>
      <dependency>
        <groupId>com.nablarch.integration</groupId>
        <artifactId>nablarch-jackson-adaptor</artifactId>
        <version>1.0.4</version>
      </dependency>
      <dependency>
        <groupId>com.nablarch.integration</groupId>
        <artifactId>nablarch-log4j-adaptor</artifactId>
        <version>1.0.0</version>
      </dependency>
      <dependency>
        <groupId>com.nablarch.integration</groupId>
        <artifactId>nablarch-slf4j-adaptor</artifactId>
        <version>1.0.0</version>
      </dependency>
      <dependency>
        <groupId>com.nablarch.integration</groupId>
        <artifactId>nablarch-jboss-logging-adaptor</artifactId>
        <version>1.0.0</version>
      </dependency>
      <dependency>
        <groupId>com.nablarch.integration</groupId>
        <artifactId>nablarch-wmq-adaptor</artifactId>
        <version>1.0.1</version>
      </dependency>
      <dependency>
        <groupId>com.nablarch.integration</groupId>
        <artifactId>nablarch-doma-adaptor</artifactId>
        <version>1.2.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.integration</groupId>
        <artifactId>nablarch-jsr310-adaptor</artifactId>
        <version>1.1.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.integration</groupId>
        <artifactId>nablarch-mail-sender-freemarker-adaptor</artifactId>
        <version>1.0.0</version>
      </dependency>
      <dependency>
        <groupId>com.nablarch.integration</groupId>
        <artifactId>nablarch-mail-sender-thymeleaf-adaptor</artifactId>
        <version>1.0.0</version>
      </dependency>
      <dependency>
        <groupId>com.nablarch.integration</groupId>
        <artifactId>nablarch-mail-sender-velocity-adaptor</artifactId>
        <version>1.0.0</version>
      </dependency>

      <dependency>
        <groupId>com.nablarch.integration</groupId>
        <artifactId>nablarch-web-thymeleaf-adaptor</artifactId>
        <version>1.0.0</version>
      </dependency>

      <!-- サードパーティライブラリ -->
      <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>${version.taglibs.standard}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-jpa_2.0_spec</artifactId>
        <version>${version.geronimo-jpa_spec}</version>
      </dependency>

      <!-- Nablarch Profiles -->
      <dependency>
        <groupId>com.nablarch.profile</groupId>
        <artifactId>nablarch-all-in-one</artifactId>
        <version>5u14</version>
      </dependency>
      <dependency>
        <groupId>com.nablarch.profile</groupId>
        <artifactId>nablarch-web</artifactId>
        <version>5u14</version>
      </dependency>
      <dependency>
        <groupId>com.nablarch.profile</groupId>
        <artifactId>nablarch-batch</artifactId>
        <version>5u14</version>
      </dependency>

  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

エラーやん...「Missing artifact asm:asm-util:jar:3.1」って

f:id:ts0818:20190406180931p:plain

なんか、足りてなかったらしいので、pom.xmlに以下のサイトの内容を追記で。

f:id:ts0818:20190406182313p:plain

んで、pom.xmlを選択した状態で、下のタブの「依存関係」に切り替えて、『依存関係』の中身を全選択し、『依存関係の管理』の「追加...」をクリック。

f:id:ts0818:20190406182610p:plain

「グループId」、「アーティファクトId」に上位のpom.xml(自分の場合ですと、『"C:\Users\Toshinobu\Desktop\mavenTestProject\trunk\pom.xml"』)の内容を入力で。んで、OK。

f:id:ts0818:20190406182014p:plain

警告が...

f:id:ts0818:20190406183419p:plain

以下のバージョンが不要らしい。上位のpom.xml で良しなに管理してくれるらしい。なので、もし、バージョンをどうにかしたい場合は、上位のpom.xml とかを編集する必要があるのではなかろうか?

今回は、下位のpom.xml の以下の行を削除で。

f:id:ts0818:20190406183520p:plain

対応してみたのですが、新たなエラーが出てきたので、一旦、『依存関係』『依存関係の管理』全部を消して、追加し直したらエラーは消えました...asm-util:jar:3.1 とか不要でしたね...。

f:id:ts0818:20190406184353p:plain

Maven 依存関係には表示されたけども、使えるのかしら?

f:id:ts0818:20190406184551p:plain

import で読み込めたようなので、利用できるようです。 

f:id:ts0818:20190406185001p:plain

それにしても、Maven で、BOM (bill of materials) って考え方があるのは初めて知った次第です。

最近、MavenよりGradleのほうが使われてるのが多くなってきてる気がしますが...
Gradle はAndroid では標準で使用されるらしいですね。

Gradle には、標準では、BOM (bill of materials) って概念が無いらしいですね。

create-something.hatenadiary.jp

⇧  上記サイト様が詳しいです。

ちなみに、「mvn archetype:generate」コマンドで「src/main/resources」「src/test/resources」とかできないんだけど、それが普通なのかしら?

qiita.com

⇧  Mavenのresources フォルダなんかは上記サイト様が詳しいです。

 

今回もモヤモヤ感が半端ない...何より、Mavenについて余計に混乱してきた感が...

今回はこのへんで。