Как разделить несколько классов среди других модулей maven - PullRequest
0 голосов
/ 04 мая 2020
  1. У меня есть 3 модуля maven, и 1 модуль содержит 2 структуры пакета (например, com.organizationname.analysis, com.organizationname.inetgration)
  2. Пакет com.organizationname.inetgration содержит класс обслуживания и класс репозитория.
  3. Я хочу поделиться этими классами пакетов с другим модулем.
  4. Для этого я создал банку этого модуля
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.2.0</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <classifier>client</classifier>
              <includes>
                <include>com/orgname/integration/**</include>
                <include>com/orgname/common/**</include>
              </includes>
            </configuration>
          </execution>
        </executions>
      </plugin>
Затем я скопировал этот Jar-файл вручную в папку «Ресурсы» других модулей и включил в качестве зависимости от System
<dependency>
  <groupId>com.orgname.integration</groupId>
  <artifactId>sample-clientapp</artifactId>
  <version>${revision}</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/src/main/resources/lib/sample-clientapp-0.1.0-SNAPSHOT.jar</systemPath>
</dependency>
Теперь, когда я использую класс обслуживания в субмодуле из этого Jar, приложение не запускается и жалуется
*************************** APPLICATION FAILED TO START ***************************   
    Description:

    Parameter 0 of constructor in com.example.module.service.SampleService required a bean of type 'com.orgname.integration.service.ConfigService' that could not be found.

Ниже мой configService
@Service
public class ConfigService {
  private final ConfigMapper configMapper;
  private final ConfigRepository configRepository;

  @Autowired
  public ConfigurationService(ConfigMapper configMapper, ConfigRepository configRepository) {
    this.configMapper = configMapper;
    this.configRepository = configRepository;
  }

}
В файле Jar нет основного метода, он также содержит конфигурацию ниже
@config
@EnableTransactionManagement
@EnableJpaRepositories(
    basePackages = {"com.orgname.integration.repository"},
    entityManagerFactoryRef = "configEntityManagerFactory",
    transactionManagerRef = "configTransactionManager")
public class Repoconfig {

  @Autowired private DataSource dataSource;

  @Bean(name = "configEntityManagerFactory")
  public LocalContainerEntityManagerFactoryBean configEntityManagerFactory(EntityManagerFactoryBuilder builder) {
    return builder.dataSource(dataSource).packages("com.orgname.integration.entity").build();
  }

  @Bean(name = "configTransactionManager")
  public PlatformTransactionManager appTransactionManager(
      @Qualifier("configEntityManagerFactory") LocalContainerEntityManagerFactoryBean entityManagerFactoryBean) {
    return new JpaTransactionManager(entityManagerFactoryBean.getObject());
  }
}

1 Ответ

0 голосов
/ 04 мая 2020
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...