2017-09-08 18 views
1

私はWebLogic Serverで公開されるMavenとSpring Bootを備えたマルチモジュールレストサービスを構築しています。アプリケーションモジュールのパッケージングを構成する方法については少し混乱しています。mavenマルチモジュールを正しくパッケージ化するには?

私の現在の構造は次のとおりです。

/アプリケーション
    /メイン(春・ブート用メインmehtod)
   /API
    /サービス
   /DAO

親プロジェクト(アプリケーションフォルダ)はpomパッケージとして設定されていますが、子プロ私はそれを設定する方法がわかりません。私は、正しい方法は.jarファイルのようなパッケージングであると信じていますが、Mavenマルチモジュールを戦争と定義したJavaプロジェクトのインターネット上のいくつかの例を見ました。

この場合、子モジュールのパッケージを定義する正しい方法は何ですか?

私の親ポンポン:

<?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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.radarveicular</groupId> 
    <artifactId>radarveicular-application</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.2.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java.version>1.8</java.version> 
     <javax.inject.version>1</javax.inject.version> 
    </properties> 

    <modules> 
    <module>radarveicular-api</module> 
    <module>radarveicular-service</module> 
    <module>radarveicular-main</module> 
    <module>radarveicular-dao</module> 
    </modules> 

    <build> 

     <plugins> 

      <plugin> 
       <artifactId>maven-eclipse-plugin</artifactId> 
       <configuration> 
        <downloadSources>true</downloadSources> 
        <downloadJavadocs>true</downloadJavadocs> 
        <wtpversion>2.0</wtpversion> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>${java.version}</source> 
        <target>${java.version}</target> 
        <encoding>${project.build.sourceEncoding}</encoding> 
       </configuration> 
      </plugin> 

     </plugins> 

    </build> 

</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> 
    <parent> 
    <groupId>com.radarveicular</groupId> 
    <artifactId>radarveicular-application</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <artifactId>radarveicular-main</artifactId> 

    <dependencies> 
     <dependency> 
      <groupId>com.radarveicular</groupId> 
      <artifactId>radarveicular-api</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
     </dependency> 

     <!-- Spring Framework --> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
      <exclusions> 
       <exclusion> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-tomcat</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-undertow</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
     </dependency> 
    </dependencies> 

    <build> 
     <finalName>${project.artifactId}</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

APIポンポン:

<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> 
    <parent> 
     <groupId>com.radarveicular</groupId> 
     <artifactId>radarveicular-application</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <artifactId>radarveicular-api</artifactId> 

    <dependencies> 
     <dependency> 
      <groupId>com.radarveicular</groupId> 
      <artifactId>radarveicular-service</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
    </dependencies> 
</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> 
    <parent> 
     <groupId>com.radarveicular</groupId> 
     <artifactId>radarveicular-application</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <artifactId>radarveicular-service</artifactId> 

    <dependencies> 
     <dependency> 
      <groupId>com.radarveicular</groupId> 
      <artifactId>radarveicular-dao</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>4.3.7.RELEASE</version> 
     </dependency> 
    </dependencies> 

</project> 

DAOポンポン:

<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> 
    <parent> 
     <groupId>com.radarveicular</groupId> 
     <artifactId>radarveicular-application</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <artifactId>radarveicular-dao</artifactId> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>4.3.7.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.30</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-codec</groupId> 
      <artifactId>commons-codec</artifactId> 
      <version>1.4</version> 
     </dependency> 
    </dependencies> 

</project> 

答えて

1

私はあなたの問題はあなたの親pom.xmlは、あなたの春のブートプロジェクトを扱うべきではないということだと思います。つまり、あなたはそれでこれを持っている必要があります。

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.2.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 

私はあなたのpom.xml親だけpomパッケージとしてあなたのモジュールとの依存関係を処理することをお勧めします。

包装

<packaging>pom</packaging> 

モジュール

私は、これはあなたを助けることを願っています

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.2.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 

包装

<packaging>war</packaging> 

その後、あなたは春のブート親と自分のモジュールradarveicular-mainを持つことになります。 =)

+0

この場合、私は私のradarveicular-main pomの2人の親を指しますか? radarveicularアプリケーションとスプリングブートの両親? –

+0

あなたのモジュールは2つの親を持つことはできません。あなたの 'radarveicular-main'は親として' spring-boot-parent'しか持っていません。次に、 'parent'は全てのプロジェクトをパッケージ化するために' module'を使います。 –

1

私はあなたの質問がマルチモジュールの一部を設計する方向にあると感じています。

アプリケーションのマルチモジュール管理は、さまざまなことに依存する可能性があります。

  1. 各サブモジュールを個別のモジュール/サービスベースとして展開したい場合は、必要に応じてオン/オフを切り替えることができます。その場合は、それぞれのモジュールを別々の戦争として構築し、それらを別々に展開すると役立ちます。

  2. ほとんどの単純な戦争としてそれを展開する必要がある場合は、すべての依存モジュールをjarとして作成し、それを親プロジェクトに含めます。このようにして、単一の戦争が展開されます。

  3. 上記の2つのハイブリッドアプローチを使用できます。

うまくいけば私はあなたの質問を正しく理解しています。 :)

ハッピーコーディング!

+0

素晴らしい!ありがとう答え= D –

+0

私はここに質問があります..最初のオプションを実行し、各モジュールを個別に展開すると、このプロセスはどのように動作しますか?ローカルサーバーに同じフォルダ構造を構築し、各モジュールをそれぞれのフォルダに展開する必要がありますか? –