忍者ブログ
[218] [217] [216] [215] [214] [213] [212] [211] [210] [209] [208]

DATE : 2017/06/27 (Tue)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2006/11/28 (Tue)

Eclipse などの IDE では依存するライブラリやプロジェクトのソースコードを参照することで、そのクラスやメソッドに関するドキュメントを表示しています。

IDE で Maven を使って複数のモジュールからなるプロジェクトを開発していると、モジュール同士は Maven のローカルリポジトリを経由して参照しあうことになります。

しかしモジュールをローカルリポジトリにインストール(install フェーズを実行)すると、クラスファイルの JAR はインストールされますが、ソースコードはインストールされません。そのため、依存するモジュールのドキュメントが IDE 上で表示されないという現象が発生します。

そこでモジュールの pom.xml に設定を行い、install フェーズ実行時にソースコードもインストールされるようにします。(「...」は省略を表します)

...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
  </build>
...

maven-source-plugin は、IDE 用などにソースコードを JAR 形式にまとめるプラグインです。このプラグインの source:jar ゴールを実行すると、テストコードを除いた全ソースコードが JAR 形式に圧縮されます。

そのため source:jar ゴールを実行するように設定すると、 install フェーズの実行中にゴールが実行されます。

          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>

ちなみに source:jar ゴールは標準では package フェーズに関連付けられています。install フェーズを実行すると、その直前に package フェーズの処理も行われるので、ソースコードのインストールも行われるというわけです。

なお、上の例はモジュールひとつに限定した話です。プロジェクトの全モジュールでソースコードをインストールする場合は、プロジェクト最上位の pom.xml に次の設定を行います。

...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <inherited>true</inherited>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      ...
    </plugins>
  </build>
...

inherited 要素を有効にしました。この要素を有効にすることで、子モジュールにここで設定した maven-source-plugin の設定が受け継がれます。

なお、最上位の pom.xml の設定は、その pom.xml 自身がローカルリポジトリにインストールされなければ有効になりません。そのため、上の設定を終えた後は install フェーズを実行して pom.xml をインストールします。

参考文献

PR
●この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード
●この記事へのトラックバック
この記事にトラックバックする:
忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
05 2017/06 07
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)
ブログ内検索
最近の状況
リンク
カレンダー
05 2017/06 07
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)