2012-07-24 2 views
1

나는 우리가 생산하는 두 개의 병에 의존하는 프로젝트를 가지고 있습니다. 이 두 개의 jar를 저장소에 넣었습니다. Ivy가이를 다운로드하고, 컴파일 및 초기 항아리를 만드는 데는 모든 것이 좋습니다.Ivy : 처리에 Jar가 필요하지만 컴파일되지 않음

그러나이 항아리에 대해 실행해야하는 obfuscator 인 다른 항아리가 있습니다. 이것은 저장소에도 있지만 컴파일에는 필요하지 않습니다. 대신, 나는 단순히 새로 만들어진 항아리에 대한 프로그램으로 실행합니다.

이 난독 화 항아리의 구성을 어떻게 분류해야합니까? 나는 이 컴파일을 위해 필요하지 않기 때문에을 컴파일 할 수 없다고 말할 수 없습니다. 또한 런타임 구성 중 하나 여야합니다. 따라서 , _optional, _master 또는 시험으로 제공됩니다.

소프트웨어를 빌드하는 데 필요한 Jar의 특수 구성을 만들 수 있지만 클래스 패스에는 필요하지 않지만 표준을 깨고 기본 configurations 이상을 생성하고 싶지는 않습니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

답변

2

Ivy 구성은 유연하도록 설계되었습니다. 물론 Maven 스코프를 표준화하는 것이 (특히 Maven repos에서 가져올 때) 완벽하게 이해할 수 있지만 빌드를 제한하는 이유는 없습니다. 특히 빌드에서만 사용되는 종속성에 대해서는 제한이 없습니다.

<configurations> 
    <conf name="compile" description="Compile dependencies"/> 
    <conf name="runtime" description="Runtime dependencies" extends="compile"/> 
    <conf name="test"  description="Test dependencies" extends="runtime"/> 
    <conf name="provided" description="Dependencies provided by target platform"/> 
    <conf name="build" description="Dependencies used by ANT build process"/> 
</configurations> 
+0

내부 정보를 위해'visibility = "private"'속성을 추가하는 것을 고려해 보라. 모듈 외부의 아무도'test'와'build'를 필요로하지 않습니다. '제공했다. .. 나는 모른다. –

+0

@ A.H. 충분히 사실. Visibility 속성의 목적이라고 생각합니다. 개인적으로 필자는 구성을 숨길 필요가 없다고 생각했습니다. –

+0

그래,이 방법은 내가 가기로 결심했다. 실제로이 프로세스에는 두 가지 종속성이있다. 이것은 [Allatori Obfuscater] (http://www.allatori.com/)입니다. obfuscater를 실행하려면 항아리가 필요하지만 obfuscation을 수행하려면 두 번째 항아리가 필요했습니다. 실제로 실제로는 두 개의 개별 클래스 경로가됩니다. 하나는 Allatori 병을 사용하여 작업을 실행하는 것입니다. 그러나 Allatori가 실행될 때 다른 jar를 포함해야하지만 Java 클래스 경로에는 포함되어 있지 않아야합니다. –

2

빌드 프로세스에만이 병이 필요한 경우 inline retrieve이 작업을 수행합니다! 담쟁이 파일이 없어도 유물을 검색하는 데 도움이됩니다.
이것은 작업에 필요한 jar, 즉 실행하지만 그 자체로 유물 (findbugs 등)과는 아무런 관련이없는 경우에 유용합니다.

<ivy:retrieve organisation="foo" module="bar" inline="true" pattern="${my.install.dir}/[artifact].[ext]"/> 

또 다른 대안은 항아리가 직접하지 프로젝트에 검색 캐시에서 촬영 된 inline ivy cachepath입니다.

<ivy:cachepath 
    organisation="org" module="module" 
    revision="latest.integration" 
    inline="true" pathid="project.compile.sourceprocessing.classpath"/> 
+0

재미있는 아이디어 :

나는 일반적으로 ANT 작업 항아리 같은 항목을 아래로 당겨에 전념 "구축"라는 추가 설정을 만들 수 있습니다. 나는 여전히 시도해 볼 수도있다. –

관련 문제