Maven-Jar-Plugin에는 VS 제외가 포함됩니다
문제
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
뿐).