2016-10-10 7 views
2

私はMavenプラグインを持っていますが、これはセントラルリポジトリにアップロードしていませんが、プロジェクトで使用します。ここでローカルJARからカスタムMavenプラグインを依存関係のあるローカルリポジトリにインストールします

<?xml version="1.0" encoding="UTF-8"?> 
<project> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>de.wintercloud</groupId> 
    <artifactId>sample</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <dependencies> 
     <dependency> 
      <groupId>de.wintercloud</groupId> 
      <artifactId>jinja-maven-plugin</artifactId> 
      <version>1.0</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>de.wintercloud</groupId> 
       <artifactId>jinja-maven-plugin</artifactId> 
       <version>1.0</version> 
       <executions> 
        <execution> 
         <phase>compile</phase> 
         <goals> 
          <goal>renderjinja</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <outputFile>out.txt</outputFile> 
        <templateFile>templ.jinja</templateFile> 
        <varFile>vars.yaml</varFile> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

は、次のとおりです。

git clone https://github.com/RudolfVonKrugstein/jinja-maven-plugin.git 
cd jinja-maven-plugin 
mvn install 

は、その後、私はこれのpom.xmlのようなプラグインを使用することができます。

は、私はこのようなMavenプラグインをインストールすることができますどのような作品

コンパイルに関連する他のファイル:

templ.jinja:

{{ Name }} 

がvars.yaml:

Name: MyWonderfullName 

これは動作します:

> mvn compile 
> cat out.txt 

MYNAME

ニースを!今、私は、彼らが簡単なjarファイルをインストールできるように、私の同僚にjarファイルなどのプラグインを提供しようとしています

を動作しません何

。私はこのエラーを取得する

mvn compile 

私は今(サンプルプロジェクトのディレクトリに)行うと

git clone https://github.com/RudolfVonKrugstein/jinja-maven-plugin.git 
cd jinja-maven-plugin 
mvn package 
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=target/jinja-maven-plugin-1.0.jar 

私はインストールできますか
[ERROR] Failed to execute goal de.wintercloud:jinja-maven-plugin:1.0:renderjinja (default) on project sample: Execution default of goal de.wintercloud:jinja-maven-plugin:1.0:renderjinja failed: A required class was missing while executing de.wintercloud:jinja-maven-plugin:1.0:renderjinja: org/yaml/snakeyaml/Yaml 

アイデアは、このようにそれを行うことです私はプラグインとしてそれを使用することができるように瓶? 依存関係がないかのように見えます。どうして?

答えて

2

ちょうどMINSTALL-110にヒットしました。これはMaven Install Pluginの3.0.0の次のリリースで修正される予定です。ここでの主な問題は、fileパラメータを持つJARファイルを手動でインストールしていることです。プラグインはPOMが存在することを検出しますが、POM全体ではなくthe coordinate information(グループID、成果物ID、パッケージおよびバージョン)のみを保持します。したがって、POMがインストールされている場合、依存関係は保持されません。あなたがインストールPOMを見ている場合

確かに、あなたは依存関係が保持されていなかったことを示して

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>de.wintercloud</groupId> 
    <artifactId>jinja-maven-plugin</artifactId> 
    <version>1.0</version> 
    <packaging>maven-plugin</packaging> 
    <description>POM was created from install:install-file</description> 
</project> 

が表示されます。 install-fileコマンドを実行するときにデバッグモードでMavenのログを見てみるならば、それが表示されます

[DEBUG] Using META-INF/maven/de.wintercloud/jinja-maven-plugin/pom.xml for groupId, artifactId, packaging and version

回避策指定することで、メインアーティファクトとともに、バージョン3.0.0 is to specify the path to the POM file to installを待っていますpomFileパラメータ。代わりに次のコマンドを実行してください。

mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=target/jinja-maven-plugin-1.0.jar -DpomFile=pom.xml 

次に、完全なPOMがインストールされ、汎用スタブはインストールされません。この変更に伴い

、エラー

[ERROR] Failed to execute goal de.wintercloud:jinja-maven-plugin:1.0:renderjinja (default) on project sample: Execution default of goal de.wintercloud:jinja-maven-plugin:1.0:renderjinja failed: A required class was missing while executing de.wintercloud:jinja-maven-plugin:1.0:renderjinja: org/yaml/snakeyaml/Yaml

はもう発生しません。 Mavenは依存関係を正しくダウンロードしてプラグインに使用します。

関連する問題