모두 안녕
SpringPlaceholderConfig를 사용합니다. 에서 config.properties의 파일 내가 좋아하는 자리가dbSchemaName = ${schema}
그리고 context.xml에서 <property name="url" value="jdbc:mysql://url:port/${dbSchemaName}"/>
Idea를 통해 로컬 Tomcat 서버의 VM 옵션을 전달하면 모두 잘 작동합니다.
그러나 Jenkins + Tomcat에서 응용 프로그램을 실행하면 다음과 같은 예외가 발생합니다.
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'schema' in string value "${schema}"
작업 구성 (VM 옵션)입니다.
다른 작업에 대해 다른 값의 인수를 전달하고 싶습니다. 따라서이 값을 각 작업의 범위에 저장해야합니다. 나는 그것이 가능하다는 것을 알고 있지만 방법을 모르겠습니까? 전역 Jenkins 구성 및 catalina.sh 등 을 사용하지 않고 어떻게 만들 수 있습니까 ?
감사
SpringPlaceholderConfig의 문제점은 런타임에 항목을 평가한다는 것입니다. Jenkins에서 설정하는 변수는 Maven 빌드 중에 만 적용됩니다.
해야 할 일은 리소스 필터링을 활성화하는 것입니다.
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
언급 된 디렉토리의 모든 파일을 처리하고 자리 표시자를 찾습니다. 그런 다음 파일의 모든 자리 표시자를 실제 값으로 바꿉니다. 따라서 실제 빌드 파일에는 자리 표시자가 아니라 실제 값이 있습니다. 이렇게하면 -Dschema=spd
maven 을 지정할 때 ${schema}
구성 파일의 자리 표시자가로 대체 spd
되고 결과 구성 파일이 출력 jar / war 파일에 있습니다. 이것은 기본적으로 빌드 시간 동안 환경을 지정할 수 있으며 빌드는 환경에 연결됩니다.
추가 정보 : http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다