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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

2881閲覧

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

i_theme

総合スコア11

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2018/03/16 01:58

編集2018/03/16 02:15

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

1<?xml version="1.0" encoding="UTF-8"?> 2 <modelVersion>4.0.0</modelVersion> 3 <version>1.0.0-SNAPSHOT</version> 4 5 <parent> 6 <groupId>org.terasoluna.gfw</groupId> 7 <artifactId>terasoluna-gfw-parent</artifactId> 8 <version>5.2.0.RELEASE</version> 9 </parent> 10 11 <build> 12 <pluginManagement> 13 <plugins> 14 <plugin> 15 <groupId>org.codehaus.mojo</groupId> 16 <artifactId>build-helper-maven-plugin</artifactId> 17 <version>1.0</version> 18 <executions> 19 <execution> 20 <id>add-source</id> 21 <phase>generate-sources</phase> 22 <goals> 23 <goal>add-source</goal> 24 </goals> 25 <configuration> 26 <sources> 27 <source>src/generated/java</source> 28 </sources> 29 </configuration> 30 </execution> 31 <execution> 32 <id>add-resource</id> 33 <phase>generate-resources</phase> 34 <goals> 35 <goal>add-resource</goal> 36 </goals> 37 <configuration> 38 <resources> 39 <resource> 40 <directory>src/generated/resources</directory> 41 </resource> 42 </resources> 43 </configuration> 44 </execution> 45 </executions> 46 </plugin> 47 <plugin> 48 <groupId>org.apache.maven.plugins</groupId> 49 <artifactId>maven-war-plugin</artifactId> 50 <version>${maven-war-plugin.version}</version> 51 <configuration> 52 <warName>aaaaa</warName> 53 <archive> 54 <manifestEntries> 55 <bbbbbb>0.0.87</bbbbbb> 56 </manifestEntries> 57 <addMavenDescriptor>false</addMavenDescriptor> 58 <manifest> 59 <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 60 </manifest> 61 </archive> 62 </configuration> 63 </plugin> 64 </plugins> 65 <!-- Bプロジェクトでも機能を流用するため、追記 --> 66 <plugin> 67 <groupId>org.apache.maven.plugins</groupId> 68 <artifactId>maven-assembly-plugin</artifactId> 69 <configuration> 70 <descriptorRefs> 71 <descriptorRef>jar-with-dependencies</descriptorRef> 72 </descriptorRefs> 73 </configuration> 74 <executions> 75 <execution> 76 <id>make-assembly</id> 77 <phase>package</phase> 78 <goals> 79 <goal>single</goal> 80 </goals> 81 </execution> 82 </executions> 83 </plugin> 84 <!-- Bプロジェクトでも機能を流用するため、追記 --> 85 </pluginManagement> 86 </build> 87 88 <dependencies> 89 依存しているもの 90 </dependencies> 91 92</project>

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

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

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

Mavenコマンドは以下です。

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

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

XML

1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <version>1.0.0-SNAPSHOT</version> 6 <packaging>${packaging.type}</packaging> 7 8~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 9 10 <profiles> 11 <!-- war出力用プロファイル --> 12 <profile> 13 <id>create-war</id> 14 <activation> 15 <activeByDefault>true</activeByDefault> 16 </activation> 17 <properties> 18 <packaging.type>war</packaging.type> 19 </properties> 20 </profile> 21 <!-- war出力用プロファイル --> 22 <!-- jar出力用プロファイル --> 23 <profile> 24 <id>create-jar</id> 25 <properties> 26 <packaging.type>jar</packaging.type> 27 </properties> 28 <build> 29 <plugins> 30 <plugin> 31 <groupId>org.apache.maven.plugins</groupId> 32 <artifactId>maven-assembly-plugin</artifactId> 33 <configuration> 34 ~~~~~ 35 </configuration> 36 <executions> 37 <execution> 38 <id>make-assembly</id> 39 <phase>package</phase> 40 <goals> 41 <goal>single</goal> 42 </goals> 43 </execution> 44 </executions> 45 </plugin> 46 </plugins> 47 </build> 48 </profile> 49 <!-- jar出力用プロファイル --> 50 </profiles> 51~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

投稿2018/03/20 09:22

i_theme

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そんな要件なら

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

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

mvn package:war
mvn package:jar

で出し分けはできたはず

投稿2018/03/18 13:32

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

i_theme

2018/03/20 09:26

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問