2016-07-18 8 views
0

In meinem lokalen Repository (.m2/repository) habe ich mehrere Gläser, die ich möchte, dass sie in meinem Projekt kopiert (und referenziert) werden. Ich habe die folgende pom.xml für die com.google.protobuf Artefakt:maven-dependency-plugin kopiert Jupiter falsch

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>groupName</groupId> 
     <artifactId>groupName.master</artifactId> 
     <relativePath>../pom.xml</relativePath> 
     <version>1.0.0-SNAPSHOT</version> 
    </parent> 
    <groupId>groupName</groupId> 
    <artifactId>com.google.protobuf</artifactId> 
    <name>com.google.protobuf</name> 
    <version>2.5.0</version> 
    <build> 
    <plugins> 
    <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.10</version> 
      <executions> 
      <execution> 
       <id>copy-installed</id> 
       <phase>install</phase> 
       <goals> 
       <goal>copy</goal> 
       </goals> 
       <configuration> 
       <artifactItems> 
        <artifactItem> 
        <groupId>${project.groupId}</groupId> 
        <artifactId>${project.artifactId}</artifactId> 
        <version>${project.version}</version> 
        <type>${project.packaging}</type> 
        </artifactItem> 
       </artifactItems> 
       <outputDirectory>build</outputDirectory> 
       </configuration> 
      </execution> 
      </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

im Grunde möchte ich dieses Plugin die notwendige jar-Datei in den Ordner mit dem Namen Build kopieren, der sich unter dem Modul-Ordner ist. Es kopiert irgendwie ein Glas. Wenn ich jedoch auf das Glas klicke und es öffne, sehe ich keine Dateien, sondern nur Manifeste. Also geben die Referenzen offensichtlich Fehler. Ich überprüfte mein lokales Repository und das Glas ist da, und es ist richtig gebildet. Also ist die Quelle nicht das Problem. Etwas stimmt nicht mit dem Kopiervorgang.

Hier sind die Gläser des gleichen Artefakts. Einer ist aus dem lokalen Repository (oben) und der andere ist der so genannte kopierte zum build Ordner. Wie Sie sehen können, fehlen dem kopierten Ordner die Klassendateien, die sich unter dem Ordner com befinden.

enter image description here

Warum kopiert das Plugin dies falsch? Hat jemand eine ähnliche Erfahrung gemacht?

UPDATE: Eine Sache, die ich bemerkte, ist, dass diese zwei Gläser verschiedene MANIFEST-Dateien haben. Könnte das der Fall sein, dass eines der Gefäße irgendwie von irgendwoher genommen wird, wo es nicht sein soll?

Antwort

0

OK, herausgefunden. Das Problem war, dass ich das Artefakt falsch definiert habe. Es hätte sein müssen:

    <artifactItem> 
        <groupId>${project.groupId}</groupId> 
        <artifactId>${project.artifactId}</artifactId> 
        <version>${project.version}</version> 
        <overWrite>true</overWrite> 
        <type>${project.packaging}</type> 
        <outputDirectory>build</outputDirectory> 
        <destFileName>protobuf-java-2.5.0.jar</destFileName> 
        </artifactItem> 

Beachten Sie die <name> -Tag, die in meinem pom.xml nicht korrekt war, daher könnte das System nicht die notwendige Artefakt greifen. Auch das destFileName Tag.

Auch oben, das war falsch:

<groupId>groupName</groupId> 
<artifactId>com.google.protobuf</artifactId> 
<name>com.google.protobuf</name> 

Wenn Sie die, die Sie aus dem zentralen Repository herunterladen verwenden möchten, können Sie nicht den groupId oder artifactId ändern. Sie sollten so bleiben, wie sie auf der Website des Pakets angegeben sind.

Nachdem ich diese behoben habe, kann ich jetzt die Klassendateien sehen.