IntelliJの基本的な操作
IntelliJでMavenを使うときは、個人的な意見ですが、基本的には依存関係の追加という形で使用します。以下のものがその使い方です。
Maven Projectの作成手順
Create Projectを選択する
※画像で選択しているところは別です
Mavenを選択する
右下の方に色々と並んでいますが構わず「Next」
画面に項目に名前を入れます。
自分の場合
GroupId: zenryokuservicve
Artifact: tensorflow.prac
※一番下はそのまま。。。
初期状態で値が入力されていますので「Finish」
作成結果を下に示します。
ここから依存関係の追加などを行います。
Mavenコマンド
依存関係を追加してGithubでソースの管理をする。という段階では上記のものでよかったのですが、プログラムの実行を考えていくと足りません。
なので、Mavenを使ってプログラムの実行まで、つまり製造から実行を考慮に入れてMavenでできることをまとめていきたいと思います。
まとめ
大まかに以下の機能がある。
- ビルド
- ドキュメンテーション
- 報告
- 依存関係
- SCM
- リリース
- 分布
タグ
タグ名 |
意味 |
project |
これは、すべての Maven pom.xml ファイルの最上位要素です。 |
modelVersion |
この要素は、この POM が使用しているオブジェクト モデルのバージョンを示します。モデル自体のバージョンが変更されることはほとんどありませんが、Maven 開発者がモデルを変更する必要があると判断した場合、使用の安定性を確保するために必須です。 |
groupId |
この要素は、プロジェクトを作成した組織またはグループの一意の識別子を示します。groupId はプロジェクトの主要な識別子の 1 つであり、通常は組織の完全修飾ドメイン名に基づいています。たとえば、org.apache.maven.pluginsすべての Maven プラグインに指定された groupId です。 |
artifactId |
この要素は、このプロジェクトによって生成されるプライマリ アーティファクトの一意のベース名を示します。プロジェクトの主な成果物は通常、JAR ファイルです。ソース バンドルなどのセカンダリ アーティファクトも、最終的な名前の一部として artifactId を使用します。Maven によって生成される一般的なアーティファクトの形式は、<artifactId>-<version>.<extension> (たとえば、myapp-1.0.jar) になります。 |
version |
この要素は、プロジェクトによって生成されたアーティファクトのバージョンを示します。Maven はバージョン管理に大いに役立ち、SNAPSHOTプロジェクトが開発状態にあることを示す指定子がバージョンに表示されることがよくあります。このガイドでは、スナップショットの使用法とその仕組みについてさらに詳しく説明します。 |
name |
この要素は、プロジェクトに使用される表示名を示します。これは、Maven が生成するドキュメントでよく使用されます。 |
url |
この要素は、プロジェクトのサイトがどこにあるかを示します。これは、Maven が生成するドキュメントでよく使用されます。プロパティこの要素には、POM 内のどこからでもアクセスできる値のプレースホルダーが含まれています。 |
dependencies |
この要素の子リストはdependency です。POM の基礎。 |
build |
この要素は、プロジェクトのディレクトリ構造の宣言やプラグインの管理などを処理します。 |
Mavenのプロジェクト構成ルール
下のように構成するルールになっている
プロジェクトのフォルダ
|-- pom.xml(POMファイル)
|-- src(ソースフォルダ)
|-- main(起動するプログラムを配置するフォルダ)
| `-- java
| `-- com(以下パッケージ)
| `-- mycompany
| `-- app
| `-- App.java
`-- test(テスト用のソース)
`-- java
`-- com(以下パッケージ)
`-- mycompany
`-- app
`-- AppTest.java
POMファイルの構成
<!-- projectタグがルート -->
<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でパッケージ -->
<groupId>com.mycompany.app</groupId>
<!-- artifactIdもパッケージ、groupIdの下に付く -->
<artifactId>my-app</artifactId>
<!-- このバージョンは作成していくとどんどん上がっていく -->
<version>1.0-SNAPSHOT</version>
<!-- プロパティ -->
<properties>
<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.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
POMファイルのすべての構成
- 要素<project>は記述子のルートです。次の表に、使用可能なすべての子要素を示します。
- <parent>要素には、このプロジェクトの継承元となる親プロジェクトを見つけるために必要な情報が含まれています。注:この要素の子は補間されないため、リテラル値として指定する必要があります。
- <groupId>要素は、プロジェクトを作成した組織またはグループの一意の識別子を示します。groupId はプロジェクトの主要な識別子の 1 つであり、通常は組織の完全修飾ドメイン名に基づいています。たとえば、org.apache.maven.pluginsすべての Maven プラグインに指定された groupId です。
- <artifactId>要素は、このプロジェクトによって生成されるプライマリ アーティファクトの一意のベース名を示します。プロジェクトの主な成果物は通常、JAR ファイルです。ソース バンドルなどのセカンダリ アーティファクトも、最終的な名前の一部として artifactId を使用します。Maven によって生成される一般的なアーティファクトの形式は、<:artifactId>-<:version>.<:extension> (たとえば、myapp-1.0.jar) になります。
- <version>要素は、プロジェクトによって生成されたアーティファクトのバージョンを示します。Maven はバージョン管理に大いに役立ち、SNAPSHOTプロジェクトが開発状態にあることを示す指定子がバージョンに表示されることがよくあります。このガイドでは、スナップショットの使用法とその仕組みについてさらに詳しく説明します。
- <name>要素は、プロジェクトに使用される表示名を示します。これは、Maven が生成するドキュメントでよく使用されます。
- <url>要素は、プロジェクトのサイトがどこにあるかを示します。これは、Maven が生成するドキュメントでよく使用されます。
- <property>要素には、POM 内のどこからでもアクセスできる値のプレースホルダーが含まれています。
- <dependency>要素の子リストはdependency です。POM の基礎。
- <build>要素は、プロジェクトのディレクトリ構造の宣言やプラグインの管理などを処理します。
プラグインを使う
Maven には、ビルドとレポートという 2 種類のプラグインがあります。
- ビルド プラグインはビルド中に実行され、<build/>要素内で構成されます。
- レポート プラグインはサイトの生成中に実行され、<reporting/>要素内で構成されます。
プラグインを使うことでコマンドにオプションのようなものが付きます。
デフォルトでは、「package」と「site」があるようです。
mvn package
mvn site
POMファイルにプラグインを追記します
pluginsタグの中につぎのようにコンパイラーブラグインを追記します。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<source>17</source>
<target>17</target>
<compilerArgs>
<arg>-cp</arg>
<arg>C:\OpenCV\opencv\build\java\opencv-480.jar;C:\JavaFX\javafx-sdk-20.0.1\lib\javafx.fxml.jar;C:\JavaFX\javafx-sdk-20.0.1\lib\javafx.swing.jar;C:\JavaFX\javafx-sdk-20.0.1\lib\javafx.base.jar;C:\JavaFX\javafx-sdk-20.0.1\lib\javafx.swing.jar;C:\JavaFX\javafx-sdk-20.0.1\lib\javafx.controls.jar;C:\JavaFX\javafx-sdk-20.0.1\lib\javafx.graphics.jar;C:\OpenCV\opencv\build\java\x86</arg>
</compilerArgs>
</configuration>
</plugin>
次のようにコマンドをたたくことができます。
mvn compile
これで、コンパイルできます。
そして、JavaFXを起動したい場合は次のようにプラグインを追加します。
使用できるコマンドは次の通りです。
mvn javafx:run
プラグインのXML
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.8</version>
<executions>
<execution>
<!-- Default configuration for running with: mvn clean javafx:run -->
<id>default-cli</id>
<configuration>
<mainClass>src.main.java.cam.HelloCV</mainClass>
<launcher>app</launcher>
<jlinkZipName>app</jlinkZipName>
<jlinkImageName>app</jlinkImageName>
<noManPages>true</noManPages>
<stripDebug>true</stripDebug>
<noHeaderFiles>true</noHeaderFiles>
<options>
<option>-cp</option>
<option>C:\OpenCV\opencv\build\java\opencv-480.jar</option>
<option>-Djava.library.path="C:\OpenCV\opencv\build\java\x64"</option>
</options>
</configuration>
</execution>
</executions>
</plugin>
ここでもポイントは、JavaFXとOpenCVを使いたかったので、プログラムを起動するときに次のこと行う必要がありました。
- クラスパスにopencv-480.jarを追加する
-cp C:\OpenCV\opencv\build\java\opencv-480.jar
- OpenCVのライブラリ(WIndowsの時はDLL、ほかはSOファイル)のパスを追加
-Djava.library.path="C:\OpenCV\opencv\build\java\x64"
上記のように、コマンドオプションをつけてやる必要がありました。
実行結果は下のようになりました。
https://www.youtube.com/watch?v=Qe_FEWF0f3g&list=PLXkBhlFfEXqURGqRl2HzJmF8DY9pMCcme
プラグイン要素内の必須要素
以下の要素が必須になる。
- groupId
- artifactId
- version
これらを下のように定義する、project要素がルート(根っこ)にあり、build要素内に、plugins要素→plugin要素を記述する。
<project>
...
<build>
<plugins>
<plugin>
<artifactId>maven-myquery-plugin</artifactId>
<version>1.0</version>
<configuration>
<url>http://www.foobar.com/query</url>
<timeout>10</timeout>
<options>
<option>one</option>
<option>two</option>
<option>three</option>
</options>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
関連ページ一覧
IntelliJ IDEA
- IntelliJ IDEA 環境構築 〜インストールと起動〜
- IntelliJ IDEA Git〜Gitリポジトリからクローン〜
- IntelliJ IDEA 使い方〜Git接続 Java起動 etc〜
- IntelliJ IDEA Jarファイルを作る
- IntelliJ IDEA 使い方〜Maven Projectの作成〜
- IntelliJ IDEA 使い方〜Mavenでライブラリを追加する〜
- IntelliJ IDEA 使い方〜Javaのコンパイルレベル設定〜
- IntelliJ IDEA Gradleセットアップ〜コマンド入力部の表示〜
- IntelliJ IDEA Discord Botを作る〜Gradle環境のセットアップ〜
Java Discord
- IntelliJ IDEA Discord Botを作る〜Gradle環境のセットアップ〜
- Java Discord セットアップ〜Hello Discord〜
- Java Discord ピンポン〜Discordプログラム〜
- Java Discord Listener実装〜コマンドを好きなだけ追加しよう〜