Я работаю над докеризацией приложения Spring Boot и сталкиваюсь с некоторыми проблемами:
- Запуск
mvn spring-boot:run
работает просто отлично. - Перед добавлением
repackage
цель, я получаю no main manifest attribute, in target/app.war
при запуске java -jar target/app.war
- После добавления цели
repackage
я получаю ошибку с созданием entityManagerFactory
при запуске java -jar target/app.war
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.boot.archive.spi.ArchiveException: Could not build ClassFile
...
***************************
APPLICATION FAILED TO START
***************************
Description:
Field profileRepository in com.bnlucas.app.util.PostTransactionUtil required a bean named 'entityManagerFactory' that could not be found.
Action:
Consider defining a bean named 'entityManagerFactory' in your configuration.
Я не знаю много о внутренней работе Maven и не могу понять, что может происходить. У меня возникла проблема с javassist
проблемами с зависимостями, и я попытался исключить ее и немного подробнее рассказал о том, что все происходило.
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>${liquibase.version}</version>
<dependencies>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.21.0-GA</version>
</dependency>
<dependency>
<groupId>org.liquibase.ext</groupId>
<artifactId>liquibase-hibernate4</artifactId>
<version>${liquibase-hibernate4.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>${spring.boot.version}</version>
<exclusions>
<exclusion>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
...
</plugin>
Пытаясь найти вещи, найденные на сайте, я изменил менеджер сущности ref:
@EnableJpaRepositories(
basePackages = {"com.bnlucas.app.repository"},
entityManagerFactoryRef = "entityManagerF"
)
и только что получил
***************************
APPLICATION FAILED TO START
***************************
Description:
Field profileRepository in com.bnlucas.app.util.PostTransactionUtil required a bean named 'entityManagerF' that could not be found.
Action:
Consider defining a bean named 'entityManagerF' in your configuration.
Я также пытался определить bean-компонент с помощью LocalContainerEntityManagerFactoryBean
и все еще ничего.
@Bean
public EntityManagerFactory entityManagerFactory(DataSourceProperties dataSourceProperties) {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setGenerateDdl(Boolean.TRUE);
vendorAdapter.setShowSql(Boolean.TRUE);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("com.bnlucas.app.repository");
factory.setDataSource(dataSource(dataSourceProperties));
factory.afterPropertiesSet();
factory.setLoadTimeWeaver(new InstrumentationLoadTimeWeaver());
return factory.getObject();
}
Что mvn spring-boot:run
делает иначе, чем mvn package spring-boot:repackage
? Как менеджер сущностей определяется с первым и дает сбой с последним?
DatabaseConfiguration: https://gist.github.com/bnlucas/3e9db7d67aa52e43e8013a0cb81b40b3#file -databaseconfiguration- java
pom: https://gist.github.com/bnlucas/3e9db7d67aa52e43e8013a0cb81b40b3#file -pom- xml