Я создал простое приложение, используя Java, Spring, Hibernate, Postgres и Angular. Это приложение работает правильно, сборка gradle правильно (что означает: «очистка gradle, сборка gradle, проверка gradle, проверка gradle и т. Д.») - у меня нет проблем.
Затем я запускаю репо на travis-ci.com - и все еще та же ошибка:
Task :test
com.bookTicket.BookTicketApplicationTests > contextLoads FAILED
java.lang.IllegalStateException
Caused by: org.springframework.beans.factory.BeanCreationException
Caused by: javax.persistence.PersistenceException
Caused by: org.hibernate.exception.GenericJDBCException
Caused by: org.postgresql.util.PSQLException
1 test completed, 1 failed
Task :test FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':test'.
Что я пробовал?:
- Удалить
psql -c "ALTER USER postgres WITH PASSWORD 'postgres';" -U postgres
из .travis.yml
и не устанавливайте пароль в application.properties
- Пользовательские postgres в .travis.yml :
addons:
postgresql: "10"
apt:
packages:
- postgresql-10
- postgresql-client-10
env:
global:
- PGPORT=5432
- Изменение
hibernate.hbm2ddl.auto=create
до
hibernate.hbm2ddl.auto=none
in application.properties
- Удалите проект lombok и создайте методы получения / установки вручную. Я удалил:
compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
У меня нет идей. Я представлю вам код ниже:
build.gradle
plugins {
id 'org.springframework.boot' version '2.1.4.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group = 'com'
version = '0.0.1'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-test'
compile group: 'org.springframework.data', name: 'spring-data-jpa', version: '2.1.6.RELEASE'
compile group: 'org.hibernate', name: 'hibernate-core', version: '5.4.2.Final'
compile group: 'org.postgresql', name: 'postgresql', version: '42.2.5'
compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
}
bootJar {
archiveName = "BootTicket.jar"
mainClassName = 'com.bookTicket.BookTicketApplication'
from('src/client/dist/client') {
into 'static'
}
}
processResources.dependsOn(':src:client:build')
settings.gradle
pluginManagement {
repositories {
gradlePluginPortal()
}
}
rootProject.name = 'bookTicket'
include ':src:client'
.travis.yml
language: java
jdk:
- oraclejdk11
services:
- postgresql
before_script:
- psql -c 'create database bookTicket;' -U postgres
- psql -c "ALTER USER postgres WITH PASSWORD 'postgres';" -U postgres
before_install:
- chmod +x gradlew
SRC / главная /-ресурсы / application.properties
jdbc.driverClassName=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost:5432/bookTicket
jdbc.username=postgres
jdbc.password=postgres
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.hbm2ddl.auto=create
SRC / главная / Java / COM / bookTicket / конфигурации / RootConfig.java
@Configuration
@EnableJpaRepositories(basePackages = {"com.bookTicket.repository"})
@PropertySource(value = {"classpath:application.properties"})
@EnableTransactionManagement
@ComponentScan(basePackages = {"com.bookTicket.service", "com.bookTicket.repository", "com.bookTicket.controller",
"com.bookTicket.domain", "com.bookTicket"})
public class RootConfig {
@Autowired
private Environment environment;
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(environment.getRequiredProperty("jdbc.driverClassName"));
dataSource.setUrl(environment.getRequiredProperty("jdbc.url"));
dataSource.setUsername(environment.getRequiredProperty("jdbc.username"));
dataSource.setPassword(environment.getRequiredProperty("jdbc.password"));
return dataSource;
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
vendorAdapter.setDatabase(Database.POSTGRESQL);
vendorAdapter.setGenerateDdl(true);
vendorAdapter.setShowSql(true);
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
factory.setJpaVendorAdapter(vendorAdapter);
factory.setPackagesToScan("com.bookTicket.domain");
factory.setDataSource(dataSource());
factory.setJpaProperties(jpaProperties());
return factory;
}
private Properties jpaProperties() {
Properties properties = new Properties();
properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect"));
properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql"));
properties.put("hibernate.hbm2ddl.auto", environment.getRequiredProperty("hibernate.hbm2ddl.auto"));
return properties;
}
@Bean
public PlatformTransactionManager transactionManager() {
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setEntityManagerFactory(entityManagerFactory().getObject());
return txManager;
}
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer o = new PropertySourcesPlaceholderConfigurer();
o.setLocation(new ClassPathResource("application.properties"));
return o;
}
}
SRC / клиент / build.gradle
plugins {
id "com.moowork.node" version "1.3.1"
}
version '0.0.1'
node {
version = '10.15.3'
npmVersion = '6.4.1'
download = true
workDir = file("${project.buildDir}/node")
nodeModulesDir = file("${project.projectDir}")
}
task build(type: NpmTask) {
args = ['run', 'build']
}
build.dependsOn(npm_install)
ЦСИ / клиент / settings.gradle
pluginManagement {
repositories {
gradlePluginPortal()
}
}
rootProject.name = 'client'
SRC / клиент / package.json
{
"name": "client",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"start-proxy": "ng serve --proxy-config proxy.conf.json",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
"private": true,
"dependencies": {
"@angular/animations": "^7.2.14",
"@angular/cdk": "^7.3.7",
"@angular/common": "~7.2.0",
"@angular/compiler": "~7.2.0",
"@angular/core": "~7.2.0",
"@angular/forms": "~7.2.0",
"@angular/material": "^7.3.7",
"@angular/platform-browser": "~7.2.0",
"@angular/platform-browser-dynamic": "~7.2.0",
"@angular/router": "~7.2.0",
"core-js": "^2.5.4",
"hammerjs": "^2.0.8",
"rxjs": "~6.3.3",
"tslib": "^1.9.0",
"zone.js": "~0.8.26"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.13.0",
"@angular/cli": "~7.3.8",
"@angular/compiler-cli": "~7.2.0",
"@angular/language-service": "~7.2.0",
"@types/node": "~8.9.4",
"@types/jasmine": "~2.8.8",
"@types/jasminewd2": "~2.0.3",
"codelyzer": "~4.5.0",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.0.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.11.0",
"typescript": "~3.2.2"
}
}
SRC / тест / Java / COM / BookTicket / BookTicketApplicationTests.java
@RunWith(SpringRunner.class)
@SpringBootTest
public class BookTicketApplicationTests {
@Test
public void contextLoads() {
}
}
Возможно, если я использую другую базу данных, это будет работать, но я хотел бы знать, что мне следует искать, чтобы решить эту проблему.