2012-01-23 16 views
1

異なるプロファイル設定とファイル二つの異なる戦争(メインモジュールの一部)を生成します - admin - webMavenのPOMおよびプロファイルの使用は、私は以下のモジュールがありますMavenのモジュールプロジェクトを持っている

webとadminはどちらもコアとWebコモンズに依存しており、各モジュールには独自のprofile.xmlがあります。

これまでのところ、管理者とウェブの両方が同じデータソース名とWebサーバーを共有していました。したがって、コアからWebコモンにいたるまで、このデータソース名への参照がありました。 (実際には、ビルド時にprofiles.xmlから置き換えられるデータソースマクロのプレースホルダです)。

しかし、私たちはデータソースを分離しなければなりません。今私はこれを行うための最良の方法を見つけようとしています。

ここではわかりやすくするためにコードスニペットを示します。 親ポンポン:

<?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> 
    <groupId>com.my.groupId</groupId> 
    <artifactId>parentArtifact</artifactId> 
    <version>1.0</version> 
    <packaging>pom</packaging> 
    ... 
    <modules> 
     <<module>core</module> 
     <module>web-commons</module> 
     <module>admin</module> 
     <module>web</module> 
    </modules> 
<project> 

コアのpom.xml

<?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> 
    <groupId>com.my.groupId</groupId> 
    <artifactId>core</artifactId> 
    <version>1.0</version> 
    <packaging>jar</packaging> 
    ... 
<project> 

コアProfiles.xml

<profilesXml xmlns="http://maven.apache.org/PROFILES/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/PROFILES/1.0.0 http://maven.apache.org/xsd/profiles-1.0.0.xsd"> 
    <profiles> 
     <profile> 
      <id>DEV</id> 
      <activation> 
       <activeByDefault>false</activeByDefault> 
      </activation> 
      <properties>     
       <datasource.name>web_datasource</datasource.name> 
       ... 
      </properties> 
     </profile> 
    </profiles> 
</profilesXml> 

ウェブ・コモンズのpom.xml

<?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> 
    <groupId>com.my.groupId</groupId> 
    <artifactId>web-commons</artifactId> 
    <version>1.0</version> 
    <packaging>jar</packaging> 
    ... 
    <dependencies> 
     <dependency> 
      <groupId>com.my.groupId</groupId> 
      <artifactId>core</artifactId> 
      <version>1.0</version> 
     </dependency> 
    </dependencies> 
<project> 

ウェブ・コモンズプロファイル.xml

<profilesXml xmlns="http://maven.apache.org/PROFILES/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/PROFILES/1.0.0 http://maven.apache.org/xsd/profiles-1.0.0.xsd"> 
    <profiles> 
     <profile> 
      <id>DEV</id> 
      <activation> 
       <activeByDefault>false</activeByDefault> 
      </activation> 
      <properties>     
       <datasource.name>web_datasource</datasource.name> 
       ... 
      </properties> 
     </profile> 
    </profiles> 
</profilesXml> 

ウェブのpom.xml

<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> 
    <parent> 
     <artifactId>parentArtifactId</artifactId> 
     <groupId>com.my.groupId</groupId> 
     <version>1.0</version> 
    </parent> 
    <groupId>com.my.groupId</groupId> 
    <artifactId>web</artifactId> 
    <version>1.0</version> 
    <packaging>war</packaging> 
    <dependencies> 
     <dependency> 
      <groupId>com.my.groupId</groupId> 
      <artifactId>core</artifactId> 
      <version>1.0</version> 
     </dependency> 

     <dependency> 
      <groupId>com.my.groupId</groupId> 
      <artifactId>web-commons</artifactId> 
      <version>1.0</version> 
     </dependency> 
    </dependencies> 
    .... 
</project> 

ウェブprofiles.xml

<profilesXml xmlns="http://maven.apache.org/PROFILES/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/PROFILES/1.0.0 http://maven.apache.org/xsd/profiles-1.0.0.xsd"> 
    <profiles> 
     <profile> 
      <id>DEV</id> 
      <activation> 
       <activeByDefault>false</activeByDefault> 
      </activation> 
      <properties>     
       <timeout>90</timeout> 
       ... 
      </properties> 
     </profile> 
    </profiles> 
</profilesXml> 

管理者のpom.xml

<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> 
    <parent> 
     <artifactId>parentArtifactId</artifactId> 
     <groupId>com.my.groupId</groupId> 
     <version>1.0</version> 
    </parent> 
    <groupId>com.my.groupId</groupId> 
    <artifactId>admin</artifactId> 
    <version>1.0</version> 
    <packaging>war</packaging> 
    <dependencies> 
     <dependency> 
      <groupId>com.my.groupId</groupId> 
      <artifactId>core</artifactId> 
      <version>1.0</version> 
     </dependency> 

     <dependency> 
      <groupId>com.my.groupId</groupId> 
      <artifactId>web-commons</artifactId> 
      <version>1.0</version> 
     </dependency> 
    </dependencies> 
    .... 
</project> 

管理profiles.xml

<profilesXml xmlns="http://maven.apache.org/PROFILES/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/PROFILES/1.0.0 http://maven.apache.org/xsd/profiles-1.0.0.xsd"> 
    <profiles> 
     <profile> 
      <id>DEV</id> 
      <activation> 
       <activeByDefault>false</activeByDefault> 
      </activation> 
      <properties>     
       <timeout>120</timeout> 
       ... 
      </properties> 
     </profile> 
    </profiles> 
</profilesXml> 

考えられる解決策:

  • 変更コアprofiles.xmlと後続のすべてのprofiles.xml、その後、 MVNきれいなパッケージ-PDEV_WEBを実行し、再度 MVNきれいなパッケージ-PDEV_ADMIN

コアProfiles.xml

<profilesXml xmlns="http://maven.apache.org/PROFILES/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/PROFILES/1.0.0 http://maven.apache.org/xsd/profiles-1.0.0.xsd"> 
    <profiles> 
     <profile> 
      <id>DEV_WEB</id> 
      <activation> 
       <activeByDefault>false</activeByDefault> 
      </activation> 
      <properties>     
       <datasource.name>web_datasource</datasource.name> 
       ... 
      </properties> 
     </profile> 
     <profile> 
      <id>DEV_ADMIN</id> 
      <activation> 
       <activeByDefault>false</activeByDefault> 
      </activation> 
      <properties>     
       <datasource.name>admin_datasource</datasource.name> 
       ... 
      </properties> 
     </profile> 

    </profiles> 
</profilesXml> 
  • すべてのpom.xmlとprofiles.xmlをそのままにして、web.war(web_datasourceを持つcore.jarとweb-commons.jarを持つ)を生成し、次にadmin.warを生成できるmavenライフサイクルポイントを見つけます(これにはadmin_datasourceを持つcore.jarとweb-commons.jarがあります)どのようにしたらよいかわかりませんが、これをさらに調査する必要があります。

    • webとadminのデプロイメントを分離し、データソース名を保持しますが、異なるデータソース設定を持つ2つの異なるWebサーバーがあります。 [可能性が最も低いオプション]

答えて

0

私はあなたがあなたの成果物は、環境に依存しない作りを提案し、それらがeからその構成を読んで作ると思います。 g。ファイルシステム上の成果物の外側にあるシステムプロパティおよび/または設定ファイル。

あなたが提案するプロファイルの豊富な種類は、私には維持の悪夢のようです。リリースプラグインでリリースをカットするとどうなりますか?どのプロファイルをアクティブにしますか?また、Maven 3ではprofile.xmlのサポートが削除されていることに注意してください。

+0

おかげで、私はここにあなたに同意します。私は最初から関与していた可能性がありますが、あなたが悪い卵を継承するこのケースの1つ:) – sachink

0

コードをリファクタリングして、コアおよびWeb共有にデータソースプロファイルへの直接参照がないようにしました。すべてのデータソースエントリは、コア/ Webコモンズのprofiles.xmlと関連モジュール(web/admin)の新しいエントリから削除されています。 [これは理想的なソリューションではないことが分かっています]

Webにprofiles.xmlのdatasource-nameのエントリがあります。同様に、adminはprofiles.xmlに独自のdatasource-nameエントリを持っています。また、コアでjndiルックアップデータソースSpring Beanを定義しました。これは、依存関係(web/admin)を持つ関連モジュールに移動されます。

ウェブprofiles.xml

<profilesXmlmlns="http://maven.apache.org/PROFILES/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/PROFILES/1.0.0 http://maven.apache.org/xsd/profiles-1.0.0.xsd"> 
    <profiles> 
     <profile> 
      <id>DEV</id> 
      <activation> 
       <activeByDefault>false</activeByDefault> 
      </activation> 
      <properties>     
       <timeout>90</timeout> 
       <datasource-name>dev_web</datasource-name> 
       ... 
      </properties> 
     </profile> 
    </profiles> 
</profilesXml> 

管理profiles.xml提案のための

<profilesXmlmlns="http://maven.apache.org/PROFILES/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/PROFILES/1.0.0 http://maven.apache.org/xsd/profiles-1.0.0.xsd"> 
    <profiles> 
     <profile> 
      <id>DEV</id> 
      <activation> 
       <activeByDefault>false</activeByDefault> 
      </activation> 
      <properties>     
       <timeout>120</timeout> 
       <datasource-name>dev_admin</datasource-name> 
       ... 
      </properties> 
     </profile> 
    </profiles> 
</profilesXml> 
関連する問題