3

次のように概説されたマルチモジュールの ejb3-web アプリケーションがあります。

project
- pom.xml
project_ear
- pom.xml
project_ejb
- pom.xml
project_web
- pom.xml

そして、以前のもの(project_ejb)が含まれている別の同様のプロジェクトがあります。

project2
- pom.xml
project2_ear
- pom.xml
project2_ejb
- pom.xml (here, project_ejb is gonna be included as a dependency)
project2_web
- pom.xml

ご覧のとおり、似たような構造をしています。とにかく、私が直面している問題は、${project.version} を使用したいときに、project2 をクリーンアップまたはビルドできないことです。


ここにプロジェクトのpomサンプルがあります

「プロジェクト」親ポン:

<modelVersion>4.0.0</modelVersion>
<groupId>com.project</groupId>
<artifactId>project</artifactId>
<version>${project.version}</version> 
<packaging>pom</packaging>

"project_ejb" ポム:

   <modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.project</groupId>
        <artifactId>project</artifactId>
    <version>${project.version}</version>
    <relativePath>../project/pom.xml</relativePath>
</parent>     

<artifactId>projectEjb</artifactId>
<packaging>ejb</packaging>

project2 親 pom:

    <modelVersion>4.0.0</modelVersion>
<groupId>com.projectdata</groupId>
<artifactId>projectdata</artifactId>
<version>${project.version}</version>
<packaging>pom</packaging>

project2_ejb pom

    <modelVersion>4.0.0</modelVersion> 
<artifactId>projectdataEjb</artifactId>
<packaging>ejb</packaging>

<parent>
            <groupId>com.projectdata</groupId>
    <artifactId>projectdata</artifactId>
            <version>${project.version}</version>
    <relativePath>../projectdata/pom.xml</relativePath>
    </parent>

そして、依存関係として project2_ejb に project_ejb モジュールを追加しました。

            <dependency>
        <groupId>com.project</groupId>
        <artifactId>projectEjb</artifactId> 
        <scope>provided</scope> 
        <type>ejb</type>
    </dependency>

全体として、プロジェクトをビルドすると、すべて問題ありません。ただし、project2 をビルドしようとすると、maven コンソールに問題が発生し、次のように表示されます。

 IllegalArgumentException: Illegal character in path at index 79: http://abcsvn01.host.myproject.net/maven/my/inhouse/com/project/project/${project.version}/project-${project.version}.pom -> [Help 1]

${project.version} を削除して定数を記述すると、すべて問題ないことに注意してください。ただし、maven3 が既に提供しているのに、なぜこの機能を使用しないのでしょうか。

助けていただければ幸いです。前もって感謝します。

4

1 に答える 1

2

親を参照する場合は、特定のバージョンを含める必要があります。を使用することはできません${project.version}。これは、子だけをビルドしたい場合があり、親がリポジトリにあるためです。次に、特定の親を指す必要があります。

あなたの子供に起こったことは、という名前の pom ファイルを見つけようとすることproject-${project.version}.pomです。これは、関連する明示的なバージョン番号を指定しなかったためです。

これは機能します (バージョンを特定のバージョンに変更します)。バージョンは子に継承されます。

<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.project</groupId>
    <artifactId>project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../project/pom.xml</relativePath>
</parent>     

<artifactId>projectEjb</artifactId>
<packaging>ejb</packaging>

次に、依存関係のバージョンを で指定する必要がありprojectEjbますproject2_ejb。そうしないと、使用する のバージョンがわかりませんprojectEjb。あなたprojectproject2は無関係であるため、バージョンが異なります。

バージョン タグを追加しました (特定のバージョンへの変更):

<dependency>
    <groupId>com.project</groupId>
    <artifactId>projectEjb</artifactId>
    <version>1.0-SNAPSHOT</version>
    <scope>provided</scope> 
    <type>ejb</type>
</dependency>
于 2012-10-03T05:58:54.517 に答える