0

私は Talend Open Studio のプラグインに取り組んでいます。そのプラットフォームのコンポーネント アーキテクチャでは、すべての外部 JAR が次のような形式のコンポーネント記述子 XML ファイルで宣言されている必要があります。

<IMPORT MODULE="commons-collections-3.2.1.jar" NAME="commons-collections-3.2.1" 
    REQUIRED="true"/>

Maven 依存関係プラグインを使用して、これらすべての外部 JAR を管理します

リスト内のすべての依存関係名を取得する方法はありますか? このようにして、(おそらく antcontrib タスクを使用して) 必要な文字列を作成し、${parameter} を入力して、最後に maven-replacer-plugin を使用して XML ファイルに追加できますか?

4

2 に答える 2

3

最も簡単な解決策は、 buld-classpathゴールを介してmaven-dependency-pluginを使用することです。この目標には、結果を次のようなファイルに入れるための補足パラメーターを指定できます。

mvn dependency:build-classpath -Dmdep.outputFile=classpath.out
于 2012-11-04T09:39:41.107 に答える
0

わかりました、私はいくつかの制限で動作するはずのこの方法を部分的に解決しました:

<plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.6</version>
        <dependencies>
            <dependency>
            <groupId>ant-contrib</groupId>
            <artifactId>ant-contrib</artifactId>
            <version>1.0b3</version>
            <exclusions>
                <exclusion>
                    <groupId>ant</groupId>
                    <artifactId>ant</artifactId>
                </exclusion>
            </exclusions>
            </dependency>
            <dependency>
                <groupId>ant</groupId>
                <artifactId>ant-nodeps</artifactId>
                <version>1.6.5</version>
            </dependency>
        </dependencies>
        <executions>
          <execution>
            <phase>package</phase>
            <id>copy-resources</id>
            <configuration>
              <exportAntProperties>true</exportAntProperties>
              <tasks>
                <!-- add the ant tasks from ant-contrib -->
                <taskdef resource="net/sf/antcontrib/antlib.xml" classpathref="maven.plugin.classpath"/>
                <var name="import.set" value=""/> 
                <for param="file">
                    <path>
                        <fileset dir="${project.build.directory}" includes="*.jar"/>
                    </path>
                    <sequential> 
                        <var name="basename" unset="true"/> 
                        <basename file="@{file}" property="basename"/>
                        <var name="filenames" value="${basename}"/>
                        <var name="import.clause" value='&lt;IMPORT MODULE="${filenames}" NAME="${filenames}" REQUIRED="true"/&gt;'/>
                        <var name="import.set" value="${import.clause}${line.separator}${import.set}" />
                    </sequential> 
                </for>
                <property name="import.jar" value="${import.set}"/> 
                <echo>${import.jar}</echo>
              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

まだいくつかの問題があります: exportAntProperties が true に設定されていても、プロパティ ${import.jar} は、他の Maven ゴールの ant taska の外部ではまだ使用できません。タスク: org.apache.tools.ant.launch.Locator.fromJarURI(Ljava/lang/String;)Ljava/lang/String;" 例外がスローされます。まだ手がかりはありません...

于 2012-11-04T10:14:16.827 に答える