質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.48%

Maven pom.xmlに編集を加え、成果物(war、jar)を分けるようにしたい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 6,764

score 11

Maven pom.xmlに編集を加え、成果物(war、jar)を分けるようにしたい

 前提

言語:java
開発ツール:Eclipse Neon.3 (4.6.3)
プロジェクト管理ツール:Maven2

WEBアプリを作っています。
成果物はwarを出力するようにpom.xmlに定義しています。
※仮にこのプロジェクトをAプロジェクトとします。

新たにBプロジェクト(ファイルの内容をチェックする)を作成し、画面で使用している機能を新しいプロジェクトでも使用したい為、Aプロジェクトをjar化し、Bプロジェクトに外部jarとして取り込み、機能を流用できました。
ここまでは問題ありません。

 実現したいこと

案件の都合上、1つのpom.xmlでwarとjarをMavenの実行コマンドによって出力を分けるようにしたいです。
現状、<packageing>をwarとjarで切り替えて出力しています。
申し訳ありませんが、どなたかご教示お願い致します。

 発生している問題・エラーメッセージ

自分でも調べたのですが、<profile>を使用すればできそう、なくらいしかわかりませんでした。。。

 該当のソースコード

使用しているpom.xmlの中身です。
案件のセキュリティに引っ掛かりそうないくつか情報は表示してないです。

<?xml version="1.0" encoding="UTF-8"?>
    <modelVersion>4.0.0</modelVersion>
    <version>1.0.0-SNAPSHOT</version>

    <parent>
        <groupId>org.terasoluna.gfw</groupId>
        <artifactId>terasoluna-gfw-parent</artifactId>
        <version>5.2.0.RELEASE</version>
    </parent>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.0</version>
                    <executions>
                        <execution>
                            <id>add-source</id>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>add-source</goal>
                            </goals>
                            <configuration>
                                <sources>
                                    <source>src/generated/java</source>
                                </sources>
                            </configuration>
                        </execution>
                        <execution>
                            <id>add-resource</id>
                            <phase>generate-resources</phase>
                            <goals>
                                <goal>add-resource</goal>
                            </goals>
                            <configuration>
                                <resources>
                                    <resource>
                                        <directory>src/generated/resources</directory>
                                    </resource>
                                </resources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>${maven-war-plugin.version}</version>
                    <configuration>
                        <warName>aaaaa</warName>
                        <archive>
                            <manifestEntries>
                                <bbbbbb>0.0.87</bbbbbb>
                            </manifestEntries>
                            <addMavenDescriptor>false</addMavenDescriptor>
                            <manifest>
                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
            </plugins>
            <!-- Bプロジェクトでも機能を流用するため、追記 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- Bプロジェクトでも機能を流用するため、追記 -->
        </pluginManagement>
    </build>

    <dependencies>
        依存しているもの
    </dependencies>

</project>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

check解決した方法

+1

以下方法でやりたいことができました。

<packaging>を固定ではなく、変数にする
<profiles>にwar出力とjar出力のパターンを記載し、Mavenコマンドによって出力するファイルを分ける

Mavenコマンドは以下です。

war出力時:
mvn -Pcreate-war -B package

jar出力時:
mvn -Pcreate-jar -B package

<?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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>${packaging.type}</packaging>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    <profiles>
        <!-- war出力用プロファイル -->
        <profile>
            <id>create-war</id>
                   <activation>
                    <activeByDefault>true</activeByDefault>
                </activation>
            <properties>
                <packaging.type>war</packaging.type>
            </properties>
        </profile>
        <!-- war出力用プロファイル -->
        <!-- jar出力用プロファイル -->
        <profile>
            <id>create-jar</id>
            <properties>
                <packaging.type>jar</packaging.type>
            </properties>
            <build>
                <plugins>
                       <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <configuration>
                            ~~~~~
                        </configuration>
                        <executions>
                            <execution>
                                <id>make-assembly</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>single</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <!-- jar出力用プロファイル -->
    </profiles>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

そんな要件なら

マスタプロジェクト(pom)
サブjarプロジェクト1(jar)
サブjarプロジェクト2(jar)
サブwarプロジェクト1(war)クラスは作らない
サブwarプロジェクト2(war)クラスは作らない

でやらないと mavenのフル機能は使えない気がしますが

mvn package:war
mvn package:jar

で出し分けはできたはず

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/20 18:26

    回答ありがとうございます。
    別の方法で解決しました!

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る