IntelliJ IDEA Maven リポジトリからロードできない

Mavenでソースをロードできない

IntelliJ IDEAを使用してpom.xmlにMavenリポジトリからソースをロードしようとすると下のような文言が出てロードできない事象にあいました。

依存関係 'com.ibm.icu:icu4j:2.9.1' が見つかりません

これは、間違っているので、エラーになっているのですが。正しくは、下のような形でpom.xmlを書きます。

<dependencies>
    <dependency>
        <groupId>com.ibm.icu</groupId>
        <artifactId>icu4j</artifactId>
        <version>2.6.1</version>
    </dependency>
</dependencies>

これでロードできるはずなのですが、出来ない。。。
こちらのページを参考にすると、「Mavenの更新ができていないから」ということでした。
下のような操作を行います。

  1. プロジェクトを右クリック
  2. Mavenを選択
  3. プロジェクトの再ロード

これで、ソース(JARなど)をロードすることができます。

でわでわ。。。

IntelliJ IDEA create GIT〜IntelliJでGITへプッシュ〜

イントロダクション

IntelliJ IDEAで作成したプロジェクトをGITへ登録する手順です。

Introduction

How to push own project in IntelliJ to GIT.

手順(How to)

(1)ローカルリポジトリの作成(Create local Repository on pc)

1.プロジェクトを開く(Open your project)

2.メインメニューからVCS→Version Control Integrationを選択する(select VCN → Version Control Integration)

3.Gitを選択する(select "Git")

4.コマンドボタン+9(⌘9)を押下→「Unversioned Files」を右クリック→ローカルリポジトリにファイルを追加する (push (⌘9) →right click on "Unversioned Files" → Add files to Git repository

※メニューからも開けます(you can find from menu)

  1. Open the project that you want to put under Git.
  2. From the main menu, choose VCS | Enable Version Control Integration.
  3. In the dialog that opens, select Git from the drop-down list and click OK.
  4. push (⌘9) → right click "Unversioned Files" and Add files to local repository.

(2) Gitリポジトリ(リモートリポジトリ)にプッシュする

1.登録するリモートリポジトリを作成する

Git Hubなどでリポジトリを作成する

2.メインメニューから「VCS」をクリックす

2.プロジェクトの設定を開く

3.接続するGitリポジトリのURLを設定する

4.コミットとプッシュを行う

5.途中でURLを聞かれるので作成したGitリポジトリのURLを指定する

6.登録できた事を確認する

ちなみに自分の作成したGitリポジトリはこちらです。 








IntelliJ IDEA Gradleセットアップ〜コマンド入力部の表示〜

イントロダクション

IntelliJ IDEAでGradleのセットアップを行います。

色々書いているけどこれがイチバン

ズバリ、コマンドプロンプト(ターミナル)です。
IntelliJ IDEAの優れていることはコマンドがすぐに開けるところ

インストール

macの場合
>brew install gralde

これでインストールできます。

Windowsなどは他のサイトを参照してください。

セットアップ

以下のように画面の左下にあるボタンからプルダウン(上がっているけども。。。)

そしてコマンド入力部が開いたら以下のようになります。ちなみにGradleのバージョンを確認するコマンドを入力しています。

>gradle -v

そして、IDEで開いいたコマンド入力部から「gradle init」を入力してエンターキーを押下します。

処理が「> Task :init SKIPPED」とスキップされている時はすでにGradleの初期化が終わっております。(IntelliJ IDEAで作成したらすでに出来上がっています)



IntelliJ IDEA 使い方〜Javaのコンパイルレベル設定〜

イントロダクション

コードはあっているのに、コンパイルがうまくいかない。などの原因はコンパイルの

コンパイルレベルの設定

ファイル→設定(Settings)→ビルド、実行、デプロイ(Build Execution Deploy)→コンパイラ→Javaコンパイラ

エラーメッセージでは、下のようなものが出ます。

java: エラー: リリース・バージョン5はサポートされていません

JDKの指定方法

ファイル→プロジェクト構成(Project Structure)で設定します。下図の数字の部分をクリックすることで使用するコンパイルレベルを指定できます。

 

関連ページ

  1. IntelliJ IDEA 環境構築 〜インストールと起動〜
  2. IntelliJ IDEA Git〜Gitリポジトリからクローン〜
  3. IntelliJ IDEA 使い方〜Git接続 Java起動 etc〜
  4. IntelliJ IDEA Jarファイルを作る
  5. IntelliJ IDEA 使い方〜Maven Projectの作成〜
  6. IntelliJ IDEA 使い方〜Mavenでライブラリを追加する〜
  7. IntelliJ IDEA 使い方〜Javaのコンパイルレベル設定〜
  8. IntelliJ IDEA Gradleセットアップ〜コマンド入力部の表示〜
  9. IntelliJ IDEA Discord Botを作る〜Gradle環境のセットアップ〜

 

IntelliJ IDEA 使い方〜Maven Projectの作成〜

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 によって生成される一般的なアーティファクトの形式は、&lt:artifactId>-&lt:version>.&lt: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を使いたかったので、プログラムを起動するときに次のこと行う必要がありました。

  1. クラスパスにopencv-480.jarを追加する
    -cp C:\OpenCV\opencv\build\java\opencv-480.jar
  2. OpenCVのライブラリ(WIndowsの時はDLL、ほかはSOファイル)のパスを追加
    -Djava.library.path="C:\OpenCV\opencv\build\java\x64"

上記のように、コマンドオプションをつけてやる必要がありました。
実行結果は下のようになりました。

https://www.youtube.com/watch?v=Qe_FEWF0f3g&list=PLXkBhlFfEXqURGqRl2HzJmF8DY9pMCcme

プラグイン要素内の必須要素

以下の要素が必須になる。

  1. groupId
  2. artifactId
  3. 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

  1. IntelliJ IDEA 環境構築 〜インストールと起動〜
  2. IntelliJ IDEA Git〜Gitリポジトリからクローン〜
  3. IntelliJ IDEA 使い方〜Git接続 Java起動 etc〜
  4. IntelliJ IDEA Jarファイルを作る
  5. IntelliJ IDEA 使い方〜Maven Projectの作成〜
  6. IntelliJ IDEA 使い方〜Mavenでライブラリを追加する〜
  7. IntelliJ IDEA 使い方〜Javaのコンパイルレベル設定〜
  8. IntelliJ IDEA Gradleセットアップ〜コマンド入力部の表示〜
  9. IntelliJ IDEA Discord Botを作る〜Gradle環境のセットアップ〜

Java Discord

  1. IntelliJ IDEA Discord Botを作る〜Gradle環境のセットアップ〜
  2. Java Discord セットアップ〜Hello Discord〜
  3.  Java Discord ピンポン〜Discordプログラム〜
  4. Java Discord Listener実装〜コマンドを好きなだけ追加しよう〜