2017-09-29 11 views
0

Mavenファイルでプロファイルの違いを微妙に指定するにはどうすればよいですか?私は、異なるプロファイルごとにほぼ同じ一連の依存関係をコピーしたくありません。Maven複数のプロファイル:ほとんどの依存関係をプロファイルに依存しないで指定できますか?

プロダクション環境では、プロファイルは「openshift」のように使用できます。この方法で、SpringBootアプリケーションはOpenshift Redhat環境でうまく動作します。ローカル開発のために私はわずかに異なる依存関係が必要です。

たとえば、依存関係の唯一の2つの違いはコメントでマークされています。

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
    <-- **** Part 1: next lines only in PROFILE 'openshift' --> 
    <exclusions> 
     <exclusion> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-tomcat</artifactId> 
     </exclusion> 
    </exclusions> 
    <-- till here --> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-tomcat</artifactId> 
     <-- ***** Part 2: next lines only in PROFILE 'openshift' --> 
     <scope>provided</scope> 
     <-- till here --> 
    </dependency> 

この行にのみ異なるプロファイルをマークする方法はありますか?

質問2:デフォルトプロファイルを使用する必要がありますか、指定したプロファイルに固有の行をマークするだけでよいですか?

+0

プロファイルによって異なる依存関係が必要なのはなぜですか?間違った音... – khmarbaise

+0

Openshift環境では、アプリケーションはWildfly環境に展開されます。ローカルでは、私はTomcat経由で作業します。これは、異なる展開のための良い解決策です。これはうまく動作します。しかし、開発と生産の間にわずかな違いはありませんか? – tjm1706

答えて

0

私の目標は、環境に固有のいくつかの依存関係を作ることです。ほとんどの依存関係は、一度mavenファイル内になければなりません。

はい、可能です。

ほとんどの部分をプロファイルに依存しないMavenで指定できます。小さな部品プロファイルに依存します(状況の場合)。以下のmavenファイルはこれを証明しています。

  • あなたはエコーのnon_openshift -Pで実行する場合は、以下のとおりです。(1)**** OUTSIDE PROFILE *****及び(2)****プロフィールnon_openshift ****。 (1)**** OUTSIDE PROFILE *****及び(2)**** PROFILEのopenshift ****:

  • あなたは-Pで実行した場合には、エコーのであるopenshift。

これはmavenファイルです。 2種類の「エコー」プラグインを使用していたため、互いに干渉しませんでした。

<?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>nl.deholtmans</groupId> 
    <artifactId>maven_profile_test</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <profiles> 
     <profile> 
      <id>not_openshift</id> 
      <build> 
       <plugins> 
        <plugin> 
         <artifactId>maven-antrun-plugin</artifactId> 
         <executions> 
          <execution> 
           <phase>install</phase> 
           <goals> 
            <goal>run</goal> 
           </goals> 
           <configuration> 
            <tasks> 
             <echo>*** Profile: NOT openshift *** </echo> 
            </tasks> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 

     <profile> 
      <id>openshift</id> 
      <build> 
       <plugins> 
        <plugin> 
         <artifactId>maven-antrun-plugin</artifactId> 
         <executions> 
          <execution> 
           <phase>install</phase> 
           <goals> 
            <goal>run</goal> 
           </goals> 
           <configuration> 
            <tasks> 
             <echo>*** Profile: openshift *** </echo> 
            </tasks> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
      </plugins> 
      </build> 
     </profile> 
    </profiles> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>com.soebes.maven.plugins</groupId> 
       <artifactId>echo-maven-plugin</artifactId> 
       <version>0.3.0</version> 
       <executions> 
        <execution> 
         <phase>compile</phase> 
         <goals> 
          <goal>echo</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <echos> 
         <echo>**** OUTSIDE PROFILE ***** </echo> 
        </echos> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
関連する問題