2016-08-18 3 views
0

私は、そこに4つのモジュールがあるマルチモジュールのmavenプロジェクトを持っています。Maven Redundant Builds

B C D(Dは、A、B、Cに依存)

すべてこれらのモジュールはばねデータMongoDBのような一般的な依存性を持っているなど、私はクリーンインストールない

、私は、上記の共通の依存関係はすべてDにバンドルされていると予想しますが、mavenはA、B、Cにバンドルしています.Dのjarファイルのサイズは巨大です。

上記のすべての共通の依存関係、つまりspring-data-mongodbなどを1か所に入れ、A、B、C、Dのすべてをjar内から使用する方法はありますか?

ありがとうございます。

親ポンポンは以下の通りです:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"  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>io.spring.platform</groupId> 
     <artifactId>platform-bom</artifactId> 
     <version>2.0.1.RELEASE</version> 
    </parent> 

    <groupId>com.betcade</groupId> 
    <artifactId>betcade-core</artifactId> 
    <version>0.21</version> 
    <packaging>pom</packaging> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java.version>1.8</java.version> 
     <start-class>com.betcade.core.AppLauncher</start-class> 
    </properties> 

    <name>betcade-core</name> 
    <description>An aggregator project for a set of betcade core service related repositories</description> 

    <modules> 
     <module>A</module> 
     <module>B</module> 
     <module>C</module> 
     <module>D</module>   

    <dependencies> 

     <!-- Spring Boot Dependencies --> 

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

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

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

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

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-configuration-processor</artifactId> 
      <optional>true</optional> 
     </dependency> 

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

     <!-- Spring Boot Dependencies --> 

     <!-- Apache Commons Dependencies --> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>3.4</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-validator</groupId> 
      <artifactId>commons-validator</artifactId> 
      <version>1.5.0</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-fileupload</groupId> 
      <artifactId>commons-fileupload</artifactId> 
      <version>1.2.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>1.3.2</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.httpcomponents</groupId> 
      <artifactId>httpclient</artifactId> 
     </dependency> 
     <!-- Apache Commons Dependencies --> 

     <!-- Twilio SMS Gateway Dependency --> 
     <dependency> 
      <groupId>com.twilio.sdk</groupId> 
      <artifactId>twilio-java-sdk</artifactId> 
      <version>3.4.5</version> 
     </dependency> 
     <!-- Twilio SMS Gateway Dependency --> 

     <!-- Mandrill Mail API Dependency --> 
     <dependency> 
      <groupId>com.mandrillapp.wrapper.lutung</groupId> 
      <artifactId>lutung</artifactId> 
      <version>0.0.7</version> 
     </dependency> 
     <!-- Mandrill Mail API Dependency --> 

     <!-- MailGun API Dependency --> 
     <dependency> 
      <groupId>net.sargue</groupId> 
      <artifactId>mailgun</artifactId> 
      <version>1.0.0</version> 
     </dependency> 
     <!-- MailGun API Dependency --> 

     <!-- Spring AWS Dependencies --> 
     <dependency> 
      <groupId>org.springframework.cloud</groupId> 
      <artifactId>spring-cloud-aws-context</artifactId> 
      <version>1.0.3.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.cloud</groupId> 
      <artifactId>spring-cloud-aws-messaging</artifactId> 
      <version>1.1.0.RELEASE</version> 
     </dependency> 
     <!-- AWS Dependencies --> 

     <!-- Joda Time Dependency --> 
     <dependency> 
      <groupId>joda-time</groupId> 
      <artifactId>joda-time</artifactId> 
     </dependency> 
     <!-- Joda Time Dependency --> 

     <!-- Quartz Scheduler Dependency --> 
     <dependency> 
      <groupId>org.quartz-scheduler</groupId> 
      <artifactId>quartz</artifactId> 
      <version>2.2.2</version> 
     </dependency> 
     <!-- Quartz Scheduler Dependency --> 

     <!-- JSP Dependency --> 
     <dependency> 
      <groupId>org.apache.tomcat.embed</groupId> 
      <artifactId>tomcat-embed-jasper</artifactId> 
     </dependency> 
     <!-- JSP Dependency --> 

     <!-- XML Parsing Dependencies --> 
     <dependency> 
      <groupId>org.eclipse.persistence</groupId> 
      <artifactId>org.eclipse.persistence.moxy</artifactId> 
      <version>2.6.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.simpleframework</groupId> 
      <artifactId>simple-xml</artifactId> 
      <version>2.7.1</version> 
     </dependency> 
     <!-- XML Parsing Dependencies --> 

     <!-- Apache POI Dependencies --> 
     <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi</artifactId> 
      <version>3.14-beta1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi-ooxml</artifactId> 
      <version>3.14-beta1</version> 
     </dependency> 
     <!-- Apache POI Dependencies --> 

     <!-- DynamicReports Dependencies --> 
     <dependency> 
      <groupId>net.sourceforge.dynamicreports</groupId> 
      <artifactId>dynamicreports-core</artifactId> 
      <version>4.1.0</version> 
     </dependency> 
     <!-- DynamicReports Dependencies --> 

     <!-- JWT Dependencies --> 
     <dependency> 
      <groupId>io.jsonwebtoken</groupId> 
      <artifactId>jjwt</artifactId> 
      <version>0.6.0</version> 
     </dependency> 
     <!-- JWT Dependencies --> 

     <!-- Timezone Dependencies --> 
     <dependency> 
      <groupId>com.ibm.icu</groupId> 
      <artifactId>icu4j</artifactId> 
      <version>57.1</version> 
     </dependency> 
     <!-- Timezone Dependencies -->   
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

PS:これは春のブートプロジェクトです。

答えて

0

すべての依存jarをプロジェクトのすべてのモジュールにバンドルしていたSprintブートプラグイン(親pomに追加されています)を設定していました。

ビルドスプリングブートプラグインを適切なモジュールに移動すると、mavenはすべての依存jarファイルを1つの場所に配置していました。

1

あなたの依存関係はルートPOMの<dependencies/>に指定されているため、各アーティファクトにバンドルされています。このリストには、すべてのモジュールに100%必要な依存関係のみが含まれている必要があります。良いプラクティスは、最初にルートPOMの<dependencyManagement/>セクションのバージョンで各プロジェクトの依存関係を定義し、各モジュールPOMの<dependencies/>セクションに必要な依存関係のみを指定することです。

+0

また、あなたの実際のアプリケーション(プロジェクトD)のファイルに 'spring-boot-maven-plugin'だけを置いて、すべてのプロジェクトではなく、各jarのすべてをバンドルするようにします。 –

+0

frezykrygerとM. Deinum:提案に感謝します。私はこの問題を解決することができ、以下に私の答えを掲示しました。 –

関連する問題