2017-02-21 4 views
-1

Ich habe 3 maven Projekte:So lösen Sie Maven COMPILATION FEHLER: Paket X existiert nicht?

project-A 
project-B 
project-C 

Das zweite Projekt (B) erfordert, die die Abhängigkeit für das erste Projekt (A). Das dritte Projekt (C) benötigt die Abhängigkeiten für das erste und zweite Projekt (A, B). Ich habe diese Abhängigkeiten in den jeweiligen Projekten pom Dateien definiert: project-B pom.xml:

<dependency> 
     <groupId>com.mygroupid</groupId> 
     <artifactId>project-A</artifactId> 
     <version>${project.version}</version> 
    </dependency> 

project-C pom.xml:

<dependency> 
     <groupId>com.mygroupid</groupId> 
     <artifactId>project-A</artifactId> 
     <version>${project.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.mygroupid</groupId> 
     <artifactId>project-B</artifactId> 
     <version>${project.version}</version> 
    </dependency> 

Alles funktioniert OK auf SpringToolSuite. Ich habe das zweite Projekt getestet (das hängt vom ersten Projekt ab) und habe auch das dritte Projekt getestet (das sowohl vom ersten als auch vom zweiten Projekt abhängt) und alles funktioniert OK von STS.

Wenn ich versuche, auszuführen: mvn saubere Installation -U -DskipTests = true

es für project-A und project-B sehr gut funktioniert, aber für project-C ich ein:

[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] MyClassOnProjectC.java:[12,38] package XXX does not exist 
[ERROR] MyClassOnProjectC.java:[22,17] cannot find symbol 
    symbol: class MyClassOnProjectB 
    location: class MyClassOnProjectC 

Unten gibt es 3 Klassen von jedem der Projekte extrahiert:

Projekt-A: User.java

package com.neweraed.datamodel; 

import java.io.Serializable; 

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlType; 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "UserType", propOrder = { 
    "name", 
    "description", 
}) 
public class User implements Serializable {  
    private static final long serialVersionUID = -876063526825526098L; 

    private String name; 
    private String description; 

    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 

} 

Projekt-B: UserOperations.java

package com.neweraed.services.midpoint; 

import java.util.List; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.http.HttpEntity; 
import org.springframework.http.HttpMethod; 
import org.springframework.http.ResponseEntity; 
import org.springframework.stereotype.Component; 
import org.springframework.web.client.RestOperations; 

import com.neweraed.datamodel.User; 
import com.neweraed.services.midpoint.utils.Constants; 
import com.neweraed.services.midpoint.utils.Utils; 

@Component 
public class UserOperations { 

    private static final Logger logger = LoggerFactory.getLogger(UserOperations.class); 

    public User getUser(User user) { 
     RestOperations restOperations = Utils.createGenericRestTemplate(); 
     ResponseEntity<User> response = null; 
     try { 
      response = restOperations.exchange(Constants.ENDPOIT_SEARCH_USER, HttpMethod.GET, new HttpEntity<Object>(Utils.createHeaders()), User.class); 

      logger.info("=== RESPONSE ===" + response + " === "); 
     } catch (Exception e) { 
      logger.error("=== ERROR === " + e.getMessage() + " === "); 
     } 
     return user; 
    } 
} 

Projekt-C: UserService.java

package com.neweraed.rest; 

import org.springframework.web.bind.annotation.RequestBody; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RestController; 

import com.neweraed.datamodel.User; 
import com.neweraed.services.midpoint.UserOperations; 

@RestController 
@RequestMapping(value="/api/v1/users") 
public class UserService { 


    @RequestMapping(value="/", method=RequestMethod.POST) 
    public User addUser(@RequestBody User user) { 
     UserOperations userOperations = new UserOperations(); 
     return userOperations.addUser(user); 
    } 
} 

Es ist wie alles scheint in Ordnung auf meine pom.xml-Dateien. Wie kann ich das lösen?

Antwort

1

Nach Ihren Räumlichkeiten, pom.xml des Projekts B muss sein:

<dependency> 
    <groupId>com.mygroupid</groupId> 
    <artifactId>project-A</artifactId> 
    <version>${project.version}</version> 
</dependency> 

und Projekt C nicht die Abhängigkeit mit A benötigt, weil es auf B

+0

Ja richtig definiert ist. Ich habe versucht, die Abhängigkeit von Projekt-A von pom.xml von Projekt-C zu entfernen und den Befehl erneut ausgeführt, aber ich bekomme den gleichen Fehler –

+0

Der Verpackungstyp von A und B ist Pom? –

+0

Nein, der Verpackungstyp von A und B ist jar –

Verwandte Themen