2017-05-23 11 views
0

私はこのマルチモジュールプロジェクトをMavenでビルドしています。次のようにルートにプロジェクトのフォルダ構造は次のとおりです。なぜOSGIバンドルモジュールが2回構築されるのですか

core (dir) 
    |--- pom.xml 
    |--- pom (dir) 
     |---com.loc.dist.core.msp.osgi.pom (dir) 
       |---pom.xml 
    |--- com.lgc.dist.core.msp.example.helloservice.client (dir) 
        |---pom.xml 

プロジェクトcom.lgc.dist.core.msp.example.helloservice.clientがOSGI bundleとしてパッケージ化され、それがcom.loc.dist.core.msp.osgi.pom

<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.lgc.dist</groupId> 
     <artifactId>com.lgc.dist.core.msp.osgi.pom</artifactId> 
     <relativePath>../pom/com.lgc.dist.core.msp.osgi.pom</relativePath> 
     <version>0.1</version> 
    </parent> 
    <artifactId>com.lgc.dist.core.msp.example.helloservice.client</artifactId> 
    <packaging>bundle</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>com.lgc.dist</groupId> 
      <artifactId>com.lgc.dist.core.msp.service</artifactId> 
      <version>0.1</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <configuration> 
        <instructions> 
         <Export-Package>com.lgc.dist.core.msp.example.helloservice.client.*;version=${project.version}</Export-Package> 
         <Private-Package>com.lgc.dist.core.msp.example.helloservice.client.internal</Private-Package> 
         <Import-Package>*</Import-Package> 
        </instructions> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-scr-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

の子モジュールであるトップレベルのpom.xmlpomフォルダを示しており、 com.lgc.dist.core.msp.example.helloservice.clientがリアクタリストにあります。私はルートからmvn clean installを実行したとき

<modules> 
     <module>pom</module> 
     <module>com.lgc.dist.core.msp.example.helloservice.client</module> 
    </modules> 

は、それが二回背中合わせにcom.lgc.dist.core.msp.example.helloservice.clientを構築する傾向があります。 2度インストールしても問題ありませんが、mvn deployを実行すると問題が発生します。他のすべてのサブモジュールは一度構築されました。 com.loc.dist.core.msp.osgi.pomの子モジュールのみが2回構築されています。私はosgiがデフォルトですべてのバンドルモジュールをビルドすると思います。しかし、pom.xmlでコメントアウトすれば、osgiバンドルモジュールはまったく構築されません。これらのOSGIバンドルを一度作成するにはどうすればよいですか?私はbundleからjarにパッケージングモードを変更する場合、それは正常に動作しますが、それはOSGiバンドルを持つことの目的を否定

EDIT。

+0

あなたの "有効なポン"を見ましたか? – Guilherme

+0

@elizeire何がありますか? – ddd

答えて

0

調査の結果、maven-bundle-plugin 2.5.4がデフォルトでバンドルを展開しています。 When using “bundle” packaging with maven-bundle-plugin goals are executed twice の答えの一つによると、(私はそれがすべてのアップ票を取得していない驚いている)、あなたはそれが今取り組んでいるの実行ブロック

    <executions> 
        <execution> 
        <id>default-deploy</id> 
        <phase>no-execute</phase> 
        <goals> 
         <goal>deploy</goal> 
        </goals> 
        </execution> 
       </executions> 

を追加することで展開を停止する必要があります。

EDITこの回答のコメントに基づいて、2.5.5で解決されます。しかしそれを試していない。

1

"com.lgc.dist.core.msp.example.helloservice.client"というプロジェクトは、トップレベルのpom.xmlの直接の子ではないため、そこから削除してください。

ので、トップレベルのpom.xmlに、エントリは次のようになります。

ポンポン/ com.loc.dist.core.msp.osgi.pomで
<modules> 
    <module>pom/com.loc.dist.core.msp.osgi.pom</module> 
</modules> 

とのpom.xmlを持つべきである。

<modules> 
    <module>com.lgc.dist.core.msp.example.helloservice.client</module> 
</modules> 
関連する問題