문제

Maven-Jar-Plugin 섹션이 포함 된 기존 POM 파일이 있습니다. Test-Jar 목표를 위해 실행되며 현재 몇 가지 디렉토리를 제외하고 있습니다.

<excludes>
     <exclude>...</exclude>
     <exclude>...</exclude>
     <exclude>somedir/**</exclude>
 </excludes>

언젠가 디렉토리에 파일을 포함시켜야하지만 언젠가 디렉토리에 나머지 파일을 제거해야합니다. 포함 된 내용은 제외보다 우선 순위가 포함되어 있으므로 다음과 같은 것을 추가했습니다 (이전에 포함 섹션이 없었습니다).

<includes>
    <include>somedir/somefile.xml</include>
</includes>

이렇게하면 파일에 몇 개의 파일만으로 테스트 용 JAR 파일을 만듭니다 (메타 인프의 물건 만). 내가 포함 된 파일도 항아리에 없습니다. 내가 기대하는 것은 하나의 추가 파일로 변경을 포함하기 전에 생성 된 항아리와 동일한 항아리입니다.

내가 여기서 무엇을 놓치고 있습니까?

도움이 되었습니까?

해결책

먼저, 당신이 어떤 것을 지정하지 않는 경우 includes, 그러면 Maven Jar 플러그인이 사용됩니다 **/** 기본 패턴으로 (참조 o.a.m.p.j.AbstractJarMojo) 즉, 그것은 모든 것을 포함 할 것입니다. 이 기본 패턴을 무시하면 플러그인에 포함 된 내용 만 포함됩니다.

둘째, 디렉토리 스캔은 끝에 o.c.p.u.DirectoryScanner 그리고 이것이 수업의 Javadoc이 말하는 것입니다.

 * The idea is simple. A given directory is recursively scanned for all files
 * and directories. Each file/directory is matched against a set of selectors,
 * including special support for matching against filenames with include and
 * and exclude patterns. Only files/directories which match at least one
 * pattern of the include pattern list or other file selector, and don't match
 * any pattern of the exclude pattern list or fail to match against a required
 * selector will be placed in the list of files/directories found.

따라서 현재 세트와 함께 includes 그리고 excludes 패턴 만 하나 파일은 포함 패턴과 일치하지만 제외 패턴과도 일치하므로 선택되지 않으므로 거의 빈 아카이브를 얻을 수 있습니다 (기본 매니페스트만으로도 참조하십시오. o.a.m.p.j.AbstractJarMojo#createArchive()).

여기에 정확한 솔루션을 제공 할 수는 없지만 파일을 포함/제외하는 방식을 다시 생각해야합니다 (예 : 추가 추가 includes 패턴, 제거 <exclude>somedir/**</exclude>, 또는 사용 includes 또는 사용합니다 excludes 뿐).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top