2016-08-19 7 views
1

プロジェクト依存関係のアーティファクト名を、あらかじめ定義されたxmlファイルに書き込む必要があります。このファイルは、プロジェクトjarと一緒にプロジェクトのリソースフォルダに常駐します。例えば predefind.xml -Mavenを使ってxmlファイルに書き込む方法は?

<project> 
    <projectName>somename</projectName> 
    <projectjar> 
     <name>some.jar</name> 
    </projectjar> 
    <dependantJarsInfo> 
     <folderName>dependant_jars</folderName> 
     <dependantJars> 
      <name>dependency.jar</name> 
     </dependantJars> 
    </dependantJarsInfo>  
</plugin> 

のpom.xml私は依存関係-1.2.0 = 1.2.0 LATEST、とは事前に定義された特定に書き込むようにフルネームを取得する必要があります

<project> 
    <groupId>com.mycom</groupId> 
    <artifactId>someproject</artifactId> 
    <packaging>jar</packaging> 
    <version>5.8.0.0</version> 

    <dependencies> 

     <dependency> 
      <groupId>com.mycom.</groupId> 
      <artifactId>dependency</artifactId> 
      <version>LATEST</version> 
     </dependency> 

    </dependencies> 

</project> 

.xmlファイルを指定したタグに保存します。

 <dependantJars> 
      <name>dependency.jar</name> 
     </dependantJars> 

もしそうなら、これは可能でしょうか?そしてもしそうでなければ、この問題を解決するためにどのような選択肢を取るべきですか?

+0

pomへの依存関係のバージョンを書いている正確な問題は何ですか?そして、あなたはこのアプローチで何を解決しようとしていますか? – khmarbaise

+0

khmarbaiseは応答に感謝の意を表します。私たちはビルドシステムを継続的に統合することを続けました。最新のキーワードを使用すると、依存関係の最後のビルドバージョンを見つけることができます。なぜなら、私はあなたが私のポイントを持っていればいいと思う – Afgan

答えて

0

みんなこの問題について研究を行った後、私は、このためのソリューションを得ました。 私はそれを解決するために2つのMavenプラグインを使用します。

  1. Mavenの依存性 - プラグイン
  2. gmaven-プラグインこのプラグインの

使い方 -

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-dependency-plugin</artifactId> 
<version>2.9</version> 
<executions> 
    <execution> 
     <id>build-classpath</id> 
     <phase>validate</phase> 
     <goals> 
      <goal>build-classpath</goal> 
     </goals> 
     <configuration> 
     <outputFile>target/classPath.txt</outputFile> 
      <includeArtifactIds> 
       dependency 
      </includeArtifactIds> 
     </configuration> 
    </execution> 
</executions> 
</plugin> 

<plugin> 
    <groupId>org.codehaus.groovy.maven</groupId> 
    <artifactId>gmaven-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>groovy-magic</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>execute</goal> 
      </goals> 
      <configuration> 

       <source> 
        def theInfoName = "target/classPath.txt"; 
        File theInfoFile = new File(theInfoName) 
        def words 
        def key 
        def value 
        if (!theInfoFile.exists()) { 
        println "File does not exist" 
        } else { 
        theInfoFile.eachLine { line -> 
        if (line.trim().size() == 0) { 
        return null 
        } else { 
        words = line 
        File theInfoFileto = new File(words) 
        ant.replace(file: "target/classes/myPackagepath/predefind.xml", token: "dependency.jar", value: theInfoFileto.getName()) 
        } 
        } 
}         
       </source> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

、これはいくつかのいずれかを助けることを願っています。

0

私は実際にあなたの問題に間違ったアプローチをしていると思います。代わりにMaven Propertiesを使用するようにしてください。

あなたのpom.xmlであなたのページの名前を定義:コマンドラインを使用して、パッケージの名前を変更したいとき、あなたがそれを上書きすることができ、その後

<project> 

    <properties> 
    <package.name>dependency.jar</package.name> 
    </properties> 

</project> 

を:

mvn -Dpackage.name=othername package ... 

ただし、パッケージの名前を上書きしない場合でも、デフォルト値あなたのpom.xml

その他
mvn package ... 

で定義されている。この程度のSOの質問:

+0

MickaëlBは答えてくれてありがとうございますが、問題はpom.xmlの中で何かを取ったり更新したりすることではなく、実行時にmavenから依存関係の詳細を取得し、私のpredefined.xmlファイルに注入するだけです。 – Afgan

関連する問題