2015-05-22 5 views
7

Ich habe zwei Module, Component und Application. Das Komponentenmodul ist aufgrund eines Abhängigkeitskonflikts (Google-Protokollpuffer) später im Erstellungsprozess schattiert.Erhalten von IntelliJ zum Importieren schattierter Abhängigkeiten in einem Maven-Projekt mit mehreren Modulen

<!-- snip from Component's pom.xml --> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>2.3</version> 
    <configuration> 
     <relocations> 
      <relocation> 
       <pattern>com.google.protobuf</pattern>         
       <shadedPattern>my.package.protocols.shaded.com.google.protobuf</shadedPattern> 
      </relocation> 
     </relocations> 
    </configuration> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>shade</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Die Anwendung hängt vom Komponentenmodul ab. Quelldateien in der Anwendung können jedoch nicht auf die schattierte Bibliothek verweisen, von der die Komponente abhängt. Dies ist entscheidend für die Interaktion mit der Komponente.

 <-- snip from Application's pom.xml --> 
    <dependency> 
      <groupId>my-group</groupId> 
      <artifactId>component</artifactId> 
      <version>${project.version}</version> 
    </dependency> 

Obwohl der Import von IntelliJ nicht gefunden werden kann, funktioniert der Maven-Build gut. Was vermisse ich/mache ich falsch?

+0

ich auch das gleiche Problem habe (genau die gleiche Situation beschrieben Ihnen). In anderen SO-Posts wird empfohlen, zu Datei -> Caches ungültig machen/Neu starten zu gehen. Ich habe diese Arbeit manchmal und nicht zeitweise gesehen (dieses Mal funktioniert es nicht). Für eine frühere Verzweigung funktioniert dies beispielsweise nicht, wenn der Cache ungültig gemacht und neu gestartet wird, aber für einen anderen Zweig. Ich frage mich, wie ich dieses Problem beheben kann. –

+0

Am Ende habe ich das schattierte Modul in sein eigenes Projekt aufgeteilt. Sicherlich keine universelle Lösung, aber in unserem Fall funktionierte es aus CI-Gründen besser. Allerdings lasse ich die Q in der Hoffnung offen, dass es eine andere Lösung gibt. Wenn nicht, öffne ich ein Ticket mit JetBrains. –

+0

hatten Sie die Chance ein Ticket mit JetBrains zu eröffnen? ich bin immer noch fest .. leider bin ich an einem großen Projekt und habe nicht die Möglichkeit, das maven-Modul in ein eigenes Projekt umzuwandeln. –

Antwort

Verwandte Themen