2013-10-24 6 views
1

아키타 입을 가지고 있고 거기에서 프로젝트를 생성한다고 해봅시다. 하지만 난 placeholder에 대한 값을 명령 줄을 통해 전달하여 세대 시간 이후에 생성 된 프로젝트의 속성 파일에서 자리 표시자를 해결하고 싶습니다.아키타 입 (archetype)에서 생성 된 프로젝트를 후 처리 할 수있는 방법이 있습니까?

MVN의 원형 : 만들 -DarchetypeGroupId = ... -DarchetypeArtifactId = ... -DarchetypeVersion = 1.0 -DgroupId = ... -DartifactId = 내 프로젝트의 -Dversion 다음 명령 줄을 가지고 예를 들어

= 1.0-SNAPSHOT -Dhello = 안녕하세요! {안녕하세요} $를 대체하는

인사 = $ {안녕하세요}

가 가능 :

은 원형은 다음과 같은 내용으로 (생성되는 프로젝트의 일환으로) app.properties를 포함 말 "Hello!" 프로젝트가 mvn archetype의 결과로 생성 된 직후 : create command?

답변

-1

잘 모르겠습니다. 프로젝트 생성 후 사후 처리를 위해 param -Dgoals를 사용하고 커스텀 플러그인을 호출 할 수 있습니다.

귀하의 요구 사항에 대해 확실하지 않지만 프로젝트 생성 자체에서 동일한 작업을 수행 할 수없는 이유는 무엇입니까?

+0

즉, mvn archetype : create 명령이 완료되면 자리 표시자를 해결합니다. –

+0

mvn archetype : archetype이 아니라 mvn archetype : create ??을 기반으로 프로젝트를 생성 할 위치를 의미합니다. 그렇다면 내가 언급 한대로 - Dgoals를 사용하여 모든 후 처리를 할 수있는 플러그인을 호출 할 수 있습니다. – Thiru

1

예 가능합니다. 받는다는 전형의 advanced usage guide에서 :

사용자가 그루비 스크립트라는 이름의 원형 포스트 - generate.groovy가 SRC/메인/자원/META-INF에 추가 할 수 있습니다, 더욱 생성 된 프로젝트를 사용자 정의하기를 원한다면/. 이 스크립트는 생성 된 아키 타입의 META-INF 폴더에서 끝나며이 아키타 입을 통해 프로젝트를 생성 할 때 실행됩니다. 이 그루비 스크립트는 ArchetypeGenerationRequest 객체뿐 아니라 사용자가 지정한 모든 System.getProperties() 및 모든 아키타 입 생성 속성에 액세스 할 수 있습니다.

0

당신은 형식에 따라 원형에 추가 속성을 정의 할 수 있습니다 : 예를 들어 https://maven.apache.org/archetype/maven-archetype-plugin/specification/archetype-metadata.html

:

파일을 정의 : SRC \ 주 \ 리소스 \ META-INF \ 받는다는 \ archetype- 여기 metadata.xml

<archetype-descriptor 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" 
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd" 
    name="modelant.metamodel.api"> 

<requiredProperties> 
    <requiredProperty key="package"><defaultValue>${groupId}.${artifactId}</defaultValue></requiredProperty> 

    <requiredProperty key="parentGroupId"><defaultValue>${groupId}</defaultValue></requiredProperty> 
    <requiredProperty key="parentArtifactId"><defaultValue>${artifactId}</defaultValue></requiredProperty> 
    <requiredProperty key="parentVersion"><defaultValue>${version}</defaultValue></requiredProperty> 

    <requiredProperty key="metamodelUrl"/> 
</requiredProperties> 
</archetype-descriptor> 

당신은 추가 필요한 속성을 정의하는 것을 볼, 그래서 그들은에있다 의무적 대화 상자 내에서 제공 될 : ​​

  • 일부 속성은 값이없는 수 - 정적 텍스트 - - 또는 이전의 값을 참조 metamodelUrl
  • 일부 속성은 기본값 중 하나 이있을 수 있습니다 참조 groupId, artifactId, 버전
  • 일부 속성은 표준 속성 - "패키지"속성의 값을 무시할 수 있습니다. 여기서 다시 정의됩니다.

참고 : 원형의