У меня есть 3 Maven проектов:Как решить maven ОШИБКА COMPILATION: пакета X не существует?
project-A
project-B
project-C
Второй проект (B) требует зависимость для первого проекта (A). Третий проект (C) требует зависимостей для первого и второго проектов (A, B). я определил эту зависимость в соответствующих проектах pom
файлов: 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>
Все работает нормально на SpringToolSuite
. Я тестировал второй проект (который зависит от первого проекта), а также тестировал третий проект (который зависит как от первого, так и от второго проекта), и все работает ОК от STS.
Когда я пытаюсь выполнить: MVN чистую установку -U -DskipTests = истинный
это работает отлично для project-A
и project-B
, но project-C
я получаю:
[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
Ниже приведены 3 класса, извлеченные из каждого из проектов:
Проект-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;
}
}
Проект-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;
}
}
Проект-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);
}
}
Похоже, все в порядке на моем pom.xml файлов. Как я могу это решить?
Да правильно. Я попытался удалить зависимость проекта-A от pom.xml проекта-C и выполнить повторную команду, но получаю ту же ошибку –
Тип упаковки A и B - pom? –
Нет, тип упаковки A и B - jar –