когда я использую модуль maven из другого проекта, должен ли я добавлять его зависимости в текущий проект и как этого избежать?

#java #spring #spring-boot #maven #spring-security

#java #spring #spring-boot #maven #spring-security

Вопрос:

Я создаю новый многомодульный проект maven и хочу повторно использовать некоторые модули из моего старого проекта, в основном я хочу повторно использовать модуль безопасности ,

я использую nexus для получения артефактов из репозитория, некоторые модули, которые не требуют зависимостей, работают нормально.

я не могу запустить новый проект, потому что он сообщает мне, что некоторые зависимости отсутствуют

Зависимости модуля, который я хочу использовать :

 <parent>
    <artifactId>back</artifactId>
    <groupId>org.goldminds</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>oauth-security</artifactId>
<version>1.0-SNAPSHOT</version>
<name>oauth-security</name>


<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<modelVersion>4.0.0</modelVersion>
  

Зависимости нового проекта maven :

   <artifactId>admin</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>admin</name>


  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.goldminds</groupId>
      <artifactId>core</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>


    <dependency>
      <groupId>org.goldminds</groupId>
      <artifactId>oauth-security</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  

Новый основной класс проекта:

 @SpringBootApplication
@ComponentScan(basePackages = {
"goldminds.controllers", 
"goldminds.oauthsecurity" // the module i want to reuse
})
    public class App {
        public static void main(String[] args) {
            SpringApplication.run(App.class, args);
        }
    }
  

Ошибка, которую я получаю :

 org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [admin.App]; nested exception is java.io.FileNotFoundException: class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfigurerAdapter.class] cannot be opened because it does not exist
at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:189) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:319) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:236) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:280) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:96) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:707) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:533) ~[spring-context-5.2.9.RELEASE.jar:5.2.9.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143) ~[spring-boot-2.3.4.RELEASE.jar:2.3.4.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758) ~[spring-boot-2.3.4.RELEASE.jar:2.3.4.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750) ~[spring-boot-2.3.4.RELEASE.jar:2.3.4.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.3.4.RELEASE.jar:2.3.4.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.3.4.RELEASE.jar:2.3.4.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237) ~[spring-boot-2.3.4.RELEASE.jar:2.3.4.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.3.4.RELEASE.jar:2.3.4.RELEASE]
at admin.App.main(App.java:14) ~[classes/:na]
  

Комментарии:

1. Используют ли старые и новые проекты одну и ту же версию Spring Boot?

2. Да, они делают: 2.3.4.RELEASE

3. судя по всему мне должны были дать два проекта, Один и тот же родитель ` <parent> <groupId>орг.springframework.загрузки</groupId> <artifactId>весна-загрузки-стартер-родитель</artifactId> <version>2.3.4.Релиз</version> <relativePath /> <!— lookup parent from repository —> </parent> `