[Maven] mvnコマンドをPowerShellを使う場合の注意点

引き続き、以下の参考書にてMavenの学習中。
Javaビルドツール入門 Maven/Gradle/SBT/Bazel対応

しかし、またまたしても参考書通りに実行するとエラーになってしまったので、対応方法の記録↓

JavaFXのプロジェクトを作成した際、エラーが発生しました。
↓実行コマンド

mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=javafx

↓発生したエラー

エラーメッセージを見ると「The goal you specified requires a project to execute but there is no POM in this directory」とあり、まったくもって心当たりがない。POMがないとあるが、これからプロジェクトを作成するので、無いのは当たり前では??

いろいろ調べた結果、PowerShellで実行する場合、パラメータをダブルクオートで括る必要がありました。

mvn archetype:generate “-DarchetypeGroupId=org.codehaus.mojo.archetypes” “-DarchetypeArtifactId=javafx”

うまくいきました!

ちなみに、コマンドプロンプトではダブルクオートは不要でした。

また、参考書通りにいかず焦りました。。。(;´д`)=3トホホ・・


[Maven] Failed to read artifact descriptor for org.aspectjのエラー対応

引き続き、以下の参考書にてMavenの学習中。
Javaビルドツール入門 Maven/Gradle/SBT/Bazel対応

しかし、またしても参考書通りに実行するとエラーになってしまったので、対応方法の記録↓

AspectJをダウンロードできるようにリモートリポジトリを追加すべく、pom.xmlに以下の記述を追加した。

そして、以下のコマンドでjarファイルの生成を試みる。

mvn package

しかし、ことごとくエラーになってしまった。

エラーメッセージを見ると、「Access denied to: http://repo.spring.io/release/org/aspectj/aspectjrt/1.6.10.RELEASE/aspectjrt-1.6.10.RELEASE.pom」とある。つまり、リポジトリにアクセスできなかったと出力されている。実際に、ブラウザでURLにアクセスしてみると、「HTTPSを使ってください」となっている。

pom.xmlのURLをHTTPSにしてリトライ。

うまくいった!!

ネットでいろいろ見てみましたが、このご時世MavenリポジトリはHTTPSが必須になってきたとのこと。またしても参考書通りにいかず、あたふたしましたが、勉強になりました。

IT系の参考書は、出版直後でないとこのようなことが往々にして起きるな。。。(;´д`)=3トホホ・・


Mavenで[ERROR] Unknown lifecycle phase “complie”.が発生する

これまで、Javaのビルドツールとして長らくAntを使ってきましたが、参画するプロジェクトではMavenが使われており、こちらの参考書で勉強を始めました。が、さっそく躓きました。
Javaビルドツール入門 Maven/Gradle/SBT/Bazel対応

最初に、以下のコマンドでMavenのプロジェクトを作成します。(Eclipseでも可)

mvn archetype:generate

その後、以下のコマンドでプログラムをコンパイルするゴール「compile」を指定して、mvnコマンドを実行せよとあります。

mvn compile

しかし、こちら実行するとエラーになってしまう。

「Unknown lifecycle phase “complie”.」。つまり、complieなんてライフサイクルは知らぬと言われています。でも、pom.xmlにはちゃんとcomplieがあります!

大人しく、エラーメッセージにあるURLを表示してみます。
https://cwiki.apache.org/confluence/display/MAVEN/LifecyclePhaseNotFoundException

mvnコマンドの実行例があります。そんでもって、エラーメッセージもよく見ると、指定方法を教えてくれています。

[ERROR] Unknown lifecycle phase “complie”. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. 

つまり、ゴールだけを指定するのではだめで、例えば、<plugin-prefix>:<goal>の形式(mvn compiler:complie)で指定すると、上手くいった。

なぜだろう、参考書のMavenは3.3.9を使っており、私のバージョンは3.6.2。バージョン差異のせいなのだろうか・・・
まだ、もやもやするがきっとこの参考書を読み進めればわかると信じて進むべし。(つ_-*)。οΟ