2016-12-09 7 views
0

ich in der Mutter erklären POMMaven Abhängigkeit mit type = pom

<dependencyManagement> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>${commons-lang3.version}</version> 
      <scope>compile</scope> 
     </dependency> 
</dependencyManagement> 

Ferner kann das Kind pom Verwendung

<dependencies> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
     </dependency> 
</dependencies> 

Alle Arbeiten gut? aber wenn ich eine solche Abhängigkeit mit type = pom verwenden

<dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.jboss.spec</groupId> 
       <artifactId>jboss-javaee-7.0</artifactId> 
       <version>${jboss-javaee-7.0.version}</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
</dependencyManagement> 

Ich habe Fehler

[ERROR] The build could not read 1 project -> [Help 1] 
[ERROR] 
[ERROR] The project by.services:by.utils:1.0.2 (D:\Work\V2_Change_Maven_Structure\by.utils\pom.xml) has 1 error 
[ERROR]  'dependencies.dependency.version' for org.jboss.spec:jboss-javaee-7.0:jar is missing. @ line 18, column 21 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 

Wie eine Abhängigkeit in dependencyManagement $ {Jboss-JavaEE-7.0.version} mit type = pom angekündigt erklären Wenn ich jboss-JavaEE-7.0 in der Wurzel zu tragen, dann läuft

Antwort

1

Die hier Klärung ist, dass, wenn Sie nicht <type> auf </dependency> innerhalb </dependencyManagement> definieren Sie es defults zu jar

<dependencyManagement> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>${commons-lang3.version}</version> 
     <scope>compile</scope> 
     <type>jar<type> <!--default value--> 
    </dependency> 
</dependencyManagement> 

und damit die module Anwendungen das Glas während der Verwendung als

<dependency> 
    <groupId>org.apache.commons</groupId> 
    <artifactId>commons-lang3</artifactId> 
</dependency> 

Die type der Abhängigkeit. Dies ist standardmäßig jar. Während es in der Regel die Erweiterung auf den Dateinamen der Abhängigkeit darstellt, ist das nicht immer der Fall. Ein Typ kann einer anderen Erweiterung und einem Klassifizierer zugeordnet werden. Der Typ entspricht oft der verwendeten Verpackung, obwohl dies auch nicht immer der Fall ist. Einige Beispiele sind jar, war, ejb-client und test-jar Neue Arten können durch Plugins definiert werden, die extensions auf true gesetzt, so ist dies keine vollständige Liste.


Aber das nächste, wenn Sie die Eltern pom ausdrücklich erklären, die Art zu haben, wie

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.jboss.spec</groupId> 
      <artifactId>jboss-javaee-7.0</artifactId> 
      <version>${jboss-javaee-7.0.version}</version> 
      <type>pom</type><!--override the default value--> 
      <scope>import</scope> 
     </dependency> 
</dependencyManagement> 

das Kind Modul jetzt entweder

<dependency> 
    <groupId>org.jboss.spec</groupId> 
    <artifactId>jboss-javaee-7.0</artifactId> 
    <type>pom</type><!--inherited--> 
</dependency> 
die Abhängigkeit mit der gleichen <type> wie

erben

ODER wenn Sie das Glas des Projekts, das eine andere <type> ist, verwenden können, können Sie explizit angeben die Abhängigkeit als:

<dependency> 
    <groupId>org.jboss.spec</groupId> 
    <artifactId>jboss-javaee-7.0</artifactId> 
    <version>${jboss-javaee-7.0.version}</version> 
    <type>jar</type> <!--different from parent--> 
    <scope>import</scope> 
</dependency> 
2

Sie versuchen jboss-javaee-7.0 Glas in Ihrem Kind-Projekt zu importieren, gibt es kein solches Glas ist, ist es vom Typ pom, die Sie bereits in Ihrem pa importieren Miete.

Sie müssen Abhängigkeiten von in Ihrem Kindprojekt importieren, etwas wie.

<dependency> 
    <groupId>org.jboss.spec.javax.ws.rs</groupId> 
    <artifactId>jboss-jaxrs-api_2.0_spec</artifactId> 
</dependency> 

Sie können weitere Informationen erhalten über importing dependencies

Verwandte Themen