원형에서 프로젝트를 생성할 때 속성 교체를 어떻게 억제합니까?
-
18-09-2019 - |
문제
간단한 프로젝트를 위한 아키타입을 만들려고 합니다. 이 프로젝트에는 아키타입에 리소스로 포함하고 싶은 일부 SSL 인증서가 포함되어 있으므로 프로젝트가 생성되면 해당 인증서가 프로젝트의 일부가 됩니다.내 문제는 Maven이 원형으로 프로젝트를 생성할 때 해당 인증서에서 속성 교체를 시도한다는 것입니다.어쨌든 maven에게 속성 교체를 수행하지 말라고 지시할 수 있나요?나는 이미 다음을 시도했습니다.
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/*.xml</exclude>
</excludes>
</resource>
내 프로토타입 POM.xml에 있습니다.어떤 아이디어가 있나요?
해결책
귀하의 문제가 정확히 무엇인지는 잘 모르겠지만(귀하의 인증서는 xml 파일입니까??) 제 추측으로는 이는 원형의 바이너리가 아닌 콘텐츠 대부분이 생성 중에 속도에 의해 처리된다는 사실과 관련이 있는 것 같습니다(참조 ARCHETYPE-90 이 문제에 대해).
해결 방법은 다음을 구성하는 것입니다. 프로젝트에서 생성 mojo는 다음을 사용하여 기본적으로 파일을 필터링하지 않도록 합니다.
-Darchetype.filteredExtentions=ext1,ext2,...
필터링할 파일의 확장자를 설정하며 기본값은 다음과 같습니다. java
, xml
, txt
, vm
, groovy
, jsp
, gsp
, vm
그리고 properties
.그래서 제외 xml
원하지 않으면 이 목록에서 삭제하세요 xml
필터링됩니다.
또 다른 옵션은 원형에 대한 사용자 정의 메타데이터를 지정하는 것입니다. src/main/resources/META-INF/maven/archetype-metadata.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="myarchetype">
<fileSets>
<fileSet filtered="false" encoding="UTF-8">
<directory>src/foobar</directory>
<includes>
<include>**/*.xml</include>
</includes>
</fileSet>
</fileSets>
</archetype-descriptor>
보다 이 페이지 원형 메타데이터에 대한 자세한 내용은
다른 팁
Archetype-Resources/Pom.xml에서 $ {basedir}를 사용하려는 비슷한 문제가 있었지만 아키타 타입이 프로젝트를 만들기 위해 실행되어 잘못된 디렉토리를 가리킬 때 교체되었습니다.
수정은 간단합니다. 대신 $ {basedir}를 사용하십시오. 이것은 $ 표시를 피하고 아키 타입이 실행될 때 Maven이 교체하지 못하게합니다. 그런 다음 생성 된 pom.xml 파일에는 아키 타입이 실행 된 디렉토리 대신 $ {basedir}가 포함됩니다.