5

すべてのMavenサブプロジェクトに同じ.targetファイルを使用することは可能ですか?

親の.pomファイルからのスニペット

<groupId>root.server</groupId>
<artifactId>root.server</artifactId>

子の.pomファイルからのスニペット

<groupId>child.project</groupId>
<artifactId>child.project.parent</artifactId>

                <target>
                    <artifact>
                        <groupId>root.server</groupId>
                        <artifactId>root.server</artifactId>
                        <version>${project.version}</version> 
                        <classifier>targetfile</classifier>
                    </artifact>
                </target>

子プロジェクトで「mvncleaninstall」を実行しようとすると、例外が発生しますCould not resolve target platform specification artifact。子プロジェクトの親で「mvncleaninstall」を試してみると、すべて正常に機能します。

すべてのプロジェクト(親+サブプロジェクト)に1つの.targetファイルを再利用する方法はありますか?

4

1 に答える 1

10

それは可能であり、それが好ましい方法です。

ファイル専用の子モジュールを作成する必要があり.targetます(たとえば、target-definitionと呼ばれます)。これは、pomパッケージタイプのプロジェクトである必要があります。次のスニペットも含める必要があります。これは、他のモジュールが.targetファイルにアクセスできるようにする部分です。

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.3</version>
    <executions>
      <execution>
        <id>attach-artifacts</id>
        <phase>package</phase>
        <goals>
          <goal>attach-artifact</goal>
        </goals>
        <configuration>
          <artifacts>
            <artifact>
              <file>targetFilename.target</file>
              <type>target</type>
        <classifier>targetFilename</classifier>
            </artifact>
          </artifacts>
        </configuration>
      </execution>
    </executions>
  </plugin>

これで、親pomで、target-platform-configurationでこのモジュールを参照でき、子モジュールもそれを使用します。

<plugin>
  <groupId>org.eclipse.tycho</groupId>
  <artifactId>target-platform-configuration</artifactId>
  <version>${tycho-version}</version>
  <configuration>
    <target>
      <artifact>
         <groupId>org.example</groupId>
         <artifactId>target-definition</artifactId>
         <version>1.0.0-SNAPSHOT</version>
         <classifier>targetFilename</classifier>
      </artifact>
    </target>
  </configuration> 
</plugin>

将来的に役立つように、.targetファイルのパッケージタイプを作成するための拡張リクエストもあります。

于 2012-08-24T07:04:41.293 に答える