2017-10-05 4 views
1

클래스 패스에 추가 파일 (CSS가 될 수 있음)이있는 스프링 부트 애플리케이션을 실행하고 싶습니다.클래스 패스에 추가 파일로 스프링 부트 애플리케이션을 실행하는 방법

나는 응용 프로그램과 함께 시작 스크립트를받은 ::

#! /bin/sh 
commandline="java -jar xxx-1.0.0.jar" 
commandline="$commandline --spring.config.location=../config/xxx.properties" 
commandline="$commandline --logging.config=../config/log4j2.xml" 
$commandline 

내 순진 첫 번째 시도가 -cp의 폴더를 추가하고 해당 폴더에 파일을 넣어했다. 그러나 그게 작동하지 않는 이유는 -cp와 -jar가 호환되지 않기 때문입니다. (좋은 설명은 여기에서 : Differences between "java -cp" and "java -jar"?)

그런 다음 명령 줄에서 classpath를 대체하는 것으로 볼 수있는 PropertiesLauncher + loader.path 사용에 대한 제안을 발견했습니다. https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html#executable-jar-property-launcher-features). 그러나 PropertiesLauncher를 사용하려면 예제에서 pom을 수정할 것을 제안했습니다. (Spring Boot: Is it possible to use external application.properties files in arbitrary directories with a fat jar?)

셸 스크립트를 수정하면됩니다.

Spring Boot 응용 프로그램을 수정하지 않고 어떻게 추가 파일을 클래스 경로에 넣어야합니까?

답변

2

를이 또한 나를 위해 작동 :

#! /bin/sh 
commandline="java -cp ../css:xxx-1.0.0.jar org.springframework.boot.loader.JarLauncher" 
commandline="$commandline --Spring.config.location=../config/xxx.properties" 
commandline="$commandline --logging.config=../config/log4j2.xml" 
$commandline 

를 내 경우에는이 참조 ms는 PropertiesLauncher를 사용하는 것보다 간단합니다.

1

내가 (pom.xml 파일을 수정하지 않고) 응용 프로그램을 수정하지 않고 PropertiesLauncher을 사용하는 방법을 보여줍니다이 문서를 발견했습니다 이 https://mash213.wordpress.com/2017/01/05/hack-how-2-add-jars-2-springboot-classpath-with-jarlauncher/

그래서와 나는 위의 클래스 경로에 추가 폴더를 추가 할 수 있으며 그것은 참으로 일하고있어 :

#! /bin/sh 
commandline="java -Dloader.path=../css -cp xxx-1.0.0.jar org.springframework.boot.loader.PropertiesLauncher" 
commandline="$commandline --spring.config.location=../config/xxx.properties" 
commandline="$commandline --logging.config=../config/log4j2.xml" 
$commandline 
관련 문제