Gradle-Spring. Vấn đề về resources trong spring boot

build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.0.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'

jar {
    baseName = 'gs-serving-web-content'
    version =  '0.1.0'
}

repositories {
    mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
	compile group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '1.5.2'
    compile("org.springframework.boot:spring-boot-starter-web")
    compile("org.springframework.boot:spring-boot-starter-thymeleaf")
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile("org.springframework.boot:spring-boot-devtools")
    testCompile("junit:junit")
}

application.properites:

spring.thymeleaf.prefix=classpath:/resources/templates/

Trong eclipse thì mình chạy ngon ơ, nhưng khi dùng cmd để chạy cái jar gs-serving-web-content thì cái file jar nó không include cái application.properties cũng như resources. Mình thử copy 2 cái đó nằm kế bên file jar thì nó chỉ đọc mỗi application.properties (bằng chứng là nó có truy xuất csdl) nhưng nó lại không tìm thấy resources.
Vậy mình muốn hỏi:

  1. Làm cách nào để file jar tìm thấy resources nằm bên ngoài?

  2. Làm cách nào để cho cả application.properties và resources vào trong file jar luôn.
    Cảm ơn các bác đã đọc bài :blush:
    SOLUTION:

  3. Mình đã làm đc, chỉnh application.properties thành:

    spring.thymeleaf.prefix=file:./resources/templates/

hoặc có thể thêm đường dẫn vào classpath.
2. Nhầm để nhầm thư mục từ main/resources/templates sang main/java/resources/templates nên nó không include vào, đã chạy bình thường.
Vẫn mong chờ cao nhân vào chỉ mình cài 2 :smiley:

Thường sẽ làm cách này:

java -cp ":${CLASSPATH}" \
	com.canh.App --spring.config.location=../properties/application.properties > ../logs/server.log & echo "$!" > ../pid/myjavaprogram.pid

Mục đích của cài file property là thêm tham số, paramter có thể điều chỉnh được tùy theo môi trường. Đưa vào gói Jar thì sao điêu chỉnh trên các môi trường khác nhau?

2 Likes

$ gradle bootRepackage

trong thư mục project bạn nhé

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?