2009-12-10 5 views
2

간단한 프로젝트를위한 archtype을 만들려고하는데,이 프로젝트에는 archtype의 리소스로 포함시키려는 ssl certs가 포함되어 있습니다. 프로젝트가 생성되면 해당 certs가 프로젝트의 일부가됩니다. 내 문제는 maven이 아키타 입을 가진 프로젝트를 생성 할 때 그 cert에 대한 속성 대체를 시도하고 있다는 것입니다. 재산 대체를하지 않겠다고 메이븐에게 말할 여지가 있습니까? 내 프로토 타입의 pom.xml에아키타 입을 사용하여 프로젝트를 만들 때 속성 대체를 어떻게 억제합니까?

<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> 

: 난 이미 다음 시도했습니다. 어떤 아이디어?

답변

2

당신의 문제가 정확히 무엇인지 모르겠지만 (인증서 XML 파일입니까 ??) 제 생각에 아키타 입의 비 이진 내용 대부분이 생성 중 속도에 의해 처리된다는 사실과 관련이 있습니다 (이 문제에 대해서는 ARCHETYPE-90을 참조하십시오).

해결 방법 사용 기본적으로 필터링되지 않은 파일을 가지고하는 create-from-project 모조를 구성하는 것입니다 :

-Darchetype.filteredExtentions=ext1,ext2,... 

그것은 여과하고 기본 값이 포함됩니다 파일의 확장자를 설정 java, xml, txt, vm, groovy, jsp, gsp, vmproperties. 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> 

는 원형 메타 데이터에 대한 자세한 내용은 this page를 참조하십시오.

3

archetype-resources/pom.xml에서 $ {basedir}을 사용하려고해도 비슷한 문제가 발생하지만 아키타 입을 실행하여 프로젝트를 만들었을 때 잘못된 디렉토리를 가리키면 바뀌 었습니다.

수정 사항은 간단합니다. 대신 \ $ {basedir}을 사용하십시오. 이는 $ 기호를 이스케이프하고 아키타 입을 실행할 때 maven이 그것을 대체하지 못하게합니다. 그런 다음 생성 된 pom.xml 파일에는 아키타 입을 실행 한 디렉토리 대신 $ {basedir}이 포함됩니다.