문제

내 개미 빌드 파일에서 매우 혼란스러운 반응을 얻었고 내가 충분히 영리하지 못한 것인지 아니면 이것이 실제로 버그일 수 있는지 궁금합니다.

내 프로젝트에는 전역적으로 다음 속성이 설정되어 있습니다.

<property name="lib.dir" location="lib"/>

그런 다음 파일 세트(둘 이상의 리소스)를 통해 이 디렉토리의 일부 파일을 jar 파일에 추가하려고 합니다.

<fileset dir="${basedir}" includes="lib/*filename*"/>

그런 식으로 일치하는 3개의 서로 다른 라이브러리가 있어야 합니다.그러나 다음을 사용하려고 하면 작동하지 않고 파일이 포함되지 않습니다.

<fileset dir="${basedir}" includes="${lib.dir}/*filename*"/>

유일한 차이점은 전역 속성의 사용법에 있습니다.이제 간단한 질문입니다.첫 번째 버전은 광고된 대로 작동하지만 두 번째 버전은 작동하지 않는 이유는 무엇입니까?

도움이 되었습니까?

해결책

"fileset" 표현식을 사용하는 작업 직전과 직후에 "lib.dir"의 실제 값을 확인하세요.전역적으로 설정한 후 실수로 변경되지 않았는지 확인하세요.그만큼 <echo/> 작업이 도움이 될 수 있습니다.


아마도 나는 해결책을 얻었을 것입니다.에 대한 설명 location속성은 다음과 같습니다:

해당 파일의 절대 파일 이름으로 속성을 설정합니다.이 속성의 값이 절대 경로인 경우 변경되지 않은 채로 유지됩니다(/ 및 \ 문자가 현재 플랫폼 규칙으로 변환됨).그렇지 않으면 프로젝트의 기반 경로에 상대적인 경로로 사용되어 확장됩니다.

간단히 value 대신 속성 location.차이점을 보여주는 테스트 스크립트는 다음과 같습니다.

<project name="test">

    <property name="test1" location="lib"></property>
    <property name="test2" value="lib"></property>

    <target name="target" description="description">
       <echo>${test1}</echo>
       <echo>${test2}</echo>
    </target>

</project>

내 시스템의 출력은 다음과 같습니다.

Buildfile: D:\Develop\workspace-jabber\scrapbook\build.xml
target:
     [echo] D:\Develop\workspace-jabber\scrapbook\lib
     [echo] lib
BUILD SUCCESSFUL
Total time: 307 milliseconds

다른 팁

나는 대답에 대한 단서를 발견했지만, 아직 모든 것이 아닙니다.

나는 Ant -debug로 파일 세트의 두 버전을 모두 흘렀고 여기에서 일어나는 일이 있습니다.

작업 중이 v-property 버전에서는 다음과 같은 출력을 얻습니다.

fileset: Setup scanner in dir [pathToDir] with patternSet{ includes: [lib/*filename*] excludes: [] }
.

은 작동하지만 - 사용하지 않는 버전은 다음과 같습니다.

fileset: Setup scanner in dir [pathToDir] with patternSet{ includes: [ [pathToDir]/lib/*filename*] excludes: [] }

보시다시피 Ant Add는 regexp에 [PathoTodir]을 검색하여

를 검색합니다.
[pathToDir]/[pathToDir]/lib/*filename*
. 분명히 존재하지 않는

.문제가 지금 : 제대로 작동하도록 버전을 수정해야합니까?

속성을 만들 때 (전역 또는 대상에서 수행됩니까?) lib 디렉토리가 존재합니까?그렇지 않은 경우 location 속성이 작동하지 않습니다 - value 속성을 대신 사용하거나 디렉토리를 작성한 후 속성을 더 잘 정의하십시오.

전술 한 바와 같이, $ {lib.dir}가 전체 경로를 너무 포함하므로 [PathoDir] / [PathoTodir] / lib / em> 파일 이름 을 찾는다.

$ {lib.dir} 속성에서 원하지 않는 [PathToDir]을 클립으로 클립으로 작업을 사용했습니다.나는 지금 가지고 있지만, 너무 멋진 솔루션을 찾지 않는 Imho :

<basename property="lib.dir.rel" file="${lib.dir}"/>
<fileset dir="${basedir}" includes="${lib.dir.rel}/*filename*"/>
.

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