2013-03-26 4 views
2

Maven 아키타 입된 속성의 유효성을 검사하는 방법이 있습니까? 그렇다면 어떻게?Maven 아키타 입 속성 검증

archetype-metadata.xml 파일에 custom requiredProperty가 있습니다. 값은 특정 정규식과 일치해야하며 archetype : generate 중에 유효성을 검사하고 싶습니다.

+0

아쉽게도 아키타 입 (archetype)에 지정된 속성에 대한 유효성 검사를 수행 할 방법이 없습니다. 가장 좋은 방법은 필요에 따라 속성을 표시하고 기본값을 제공하는 것입니다. – Tome

답변

0

archetype 플러그인 또는 archetype-metadata.xml에서 유효성 검사 규칙/유형을 설정하는 방법에 대한 명시 적 지원은 없지만이 방법을 사용하면 속도를 낼 수 있으므로 얻을 수 있습니다. 그것은 몇 가지 기본적인 검증을 수행합니다. 주석이 말한대로 - 그것은 아니지만, 꽤

이 게시물을 Maven archetype required property number

UPDATE보기 ... 작동이 지금 가능하다. 위의 다른 대답을 참조하거나 https://issues.apache.org/jira/browse/ARCHETYPE-487

3

내가 받는다는 - 원형에서이 기능을 구현하고 풀 요구로 제출 :

https://issues.apache.org/jira/browse/ARCHETYPE-487

예 :

<requiredProperties> 
    <requiredProperty key="pluginPackage"> 
     <validationRegex><![CDATA[^[a-z][a-z0-9_]*(\.[a-z0-9_]+)+[0-9a-z_]$]]></validationRegex> 
    </requiredProperty> 
    <requiredProperty key="pluginId"> 
     <validationRegex><![CDATA[^[a-zA-Z0-9-]+$]]></validationRegex> 
    </requiredProperty> 
    <requiredProperty key="pluginName"> 
     <validationRegex><![CDATA[^([a-zA-Z_$][a-zA-Z\d_$]*\.)*[a-zA-Z_$][a-zA-Z\d_$]*$]]></validationRegex> 
    </requiredProperty> 
    <requiredProperty key="pluginProvider"> 
    </requiredProperty> 
    <requiredProperty key="pluginZipFileName"> 
     <validationRegex><![CDATA[^[^*&%\s]+$]]></validationRegex> 
    </requiredProperty> 
    <requiredProperty key="pluginVersion"> 
     <validationRegex><![CDATA[^[0-9]+\.[0-9]+\.[0-9]+$]]></validationRegex> 
    </requiredProperty> 
    </requiredProperties> 

그런 것 유효 입력을 얻으십시오 :

[INFO] Using property: groupId = com.nick 
Define value for property 'artifactId': abc 
Define value for property 'version' 1.0-SNAPSHOT: : 
[INFO] Using property: package = com.nick 
Define value for property 'pluginId' (should match expression '^[a-zA-Z0-9-]+$'): test-plugin525 
Define value for property 'pluginName' (should match expression '^([a-zA-Z_$][a-zA-Z\d_$]*\.)*[a-zA-Z_$][a-zA-Z\d_$]*$'): NickTest101 
Define value for property 'pluginPackage' (should match expression '^[a-z][a-z0-9_]*(\.[a-z0-9_]+)+[0-9a-z_]$'): com.nicholas.fun 
Define value for property 'pluginProvider': Nicholas DiPiazza 
Define value for property 'pluginVersion' (should match expression '^[0-9]+\.[0-9]+\.[0-9]+$'): 1.0 
Value does not match the expression, please try again: 

참고 : 아직 배치 입력을 정규식으로 정규화하지는 않습니다. 참조 : https://issues.apache.org/jira/browse/ARCHETYPE-532

+0

자신의 라이브러리에 연결하는 것만으로는 좋은 대답이 아닙니다. 링크를 통해 왜 문제가 해결되는지 설명하고, 라이브러리를 사용하여 코드를 제공하고, 작성한 것을 부인하면 더 좋은 답을 얻을 수 있습니다. 참고 : [** 무엇이 "좋은"자기 홍보를 의미합니까? **] (http://meta.stackexchange.com/q/182212/200235) – durron597

+3

이것은 자기 홍보가 아닙니다 ... 나는 내 자신과 연결되어 있지 않습니다. 라이브러리, 나는 질문의 저자에 의해 사용 된 원본 라이브러리에 오픈 소스 기여를 연결하고 있습니다. 그가 요구 한 기능을 정확히 구현 했으므로 더 이상의 설명은 필요하지 않습니다. – mryan

+0

나는 링크가 절름발이라는 점에 동의합니다 (확실히 자기 홍보가 아니지만, 롤). 작업 예제와 출력이 작동하는 것을 추가했습니다. –

관련 문제