2016-10-10 9 views
2

중앙 저장소에 업로드하지 않았지만 프로젝트에서 사용하려는 maven 플러그인이 있습니다. 여기종속성이있는 local 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 파일 같은 플러그인을 사용할 수 있습니다

나는이 같은 받는다는 플러그인을 설치할 수 있습니다 작동 무엇

컴파일과 관련된 다른 파일 :

templ.jinja :

{{ Name }} 

vars.yaml가 :

Name: MyWonderfullName 

이 작동 :

> mvn compile 
> cat out.txt 

MyName로

니스! 지금은 그들이 간단한 항아리를 설치할 수 있도록 동료에 항아리와 같은 플러그인을 제공하기 위해 노력하고

작동하지 않습니다 무엇

. 아이디어는 다음과 같이 그것을 할 수 있습니다 :

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 

지금

mvn compile 

는이 오류 수 (샘플 프로젝트 디렉토리에서) 할 때 : 나는 어떻게 설치할 수

[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 명령을 실행할 때 디버그 모드에서 메이븐 로그를 살펴 경우, 그것은 표시됩니다

[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은 의존성을 올바르게 다운로드하여 플러그인에 사용합니다.