programing tip

누군가 ivy.xml 종속성의 conf 속성을 설명 할 수 있습니까?

itbloger 2020. 11. 18. 08:37
반응형

누군가 ivy.xml 종속성의 conf 속성을 설명 할 수 있습니까?


Ivy 종속성 태그의 conf 속성에 대한 자세한 설명을 찾을 수 없습니다 .

<dependency org="hibernate" name="hibernate" rev="3.1.3" conf="runtime, standalone -> runtime(*)"/>

conf 속성 보이 십니까? ->기호 의 오른쪽에 대한 설명 (내가 이해할 수있는)을 찾을 수 없습니다 . Maven에 대해 가장 먼저 알지 못하므로이 속성을 고려하여 설명해주세요.

예, 이미 살펴 보았습니다 : http://ant.apache.org/ivy/history/latest-milestone/ivyfile/dependency.html

고마워,


우선, Ivy는 Maven이 아닙니다 .)
Maven2는 소프트웨어 프로젝트 관리 및 이해 도구 ​​인 반면 Ivy는 종속성 관리 도구 일뿐입니다.

Ivy는 구성 이라는 고유 한 개념에 크게 의존 합니다 .
Ivy에서 모듈 구성은 모듈 을 사용하거나 보는 방법 입니다.
예를 들어 모듈에 테스트 및 런타임 구성이있을 수 있습니다. 그러나 MySQL 및 Oracle 구성을 가질 수도 있습니다. 또는 Hibernate 및 JDBC 구성.

각 구성에서 다음을 선언 할 수 있습니다.

  • 어떤 인공물 (항아리, 전쟁, ...)이 필요한지.
  • 다른 모듈에 대한 종속성을 확인하고 필요한 종속성의 구성을 설명하십시오. 이를 구성 매핑이라고합니다.

따라서 conf 속성은 정확히 다음을 수행합니다. 종속성에 대한 구성 매핑을 설명합니다. 매핑 자식 요소는 당신 "의 오른쪽 인 기호"와 매핑 된 종속성 구성의 이름을 나타냅니다. 이 모듈의 모든 구성을 지정하는 데 와일드 카드를 사용할 수 있습니다.
->'*'


Maven2의 측면에는 scope 라는 것이 있습니다.
종속성을 테스트 범위 또는 빌드 타임 범위의 일부로 선언 할 수 있습니다.
그런 다음이 범위에 따라 해당 범위에 따라 종속성이있는 종속성 아티팩트 (maven2의 모듈 당 하나의 아티팩트 만)를 얻을 수 있습니다. 범위는 maven2에 미리 정의되어 있으며 변경할 수 없습니다.

그것의 의미는 :

많은 라이브러리에 대해 다운로드되는 불필요한 종속성 많이 있습니다 .
예를 들어, Hibernate는 여러 JBoss JAR을 다운로드하고 Display Tag는 모든 다양한 웹 프레임 워크 JAR을 다운로드합니다. 나는 내가 추가 한만큼의 의존성을 거의 배제했다.

문제는 최대 절전 모드를 여러 캐시 구현, 여러 연결 풀 구현과 함께 사용할 수 있다는 것입니다. 그리고 이것은 범위로 관리 할 수 ​​없습니다. 여기서 Ivy 구성은 이러한 종류의 문제에 대한 우아한 솔루션을 제공합니다.
예를 들어 Ivy에서 hibernate 에 다음 과 같은 Ivy 파일이 있다고 가정하면 다음과 같은 종속성을 선언 할 수 있습니다.

<dependency org="hibernate" name="hibernate" rev="2.1.8" conf="default->proxool,oscache"/>

proxool 및 oscache 구현으로 최대 절전 모드를 얻으려면 다음과 같이하십시오.

<dependency org="hibernate" name="hibernate" rev="2.1.8" conf="default->dbcp,swarmcache"/>

dbcp 및 swarmcache로 최대 절전 모드를 설정합니다.

기본 master구성을 " proxool,oscache"또는 " "에 매핑하여 "hibernate"모듈에서 정확히dbcp,swarmcache 필요한 것을 지정합니다 .


라이브러리와 관련된 각 모듈에 대해 정의 된 Ivy 구성을 나열하여 이러한 "proxool, ..."인수를 찾을 수 있습니다. 예를 들면 :

<ivy-module version="2.0">
<info organisation="ssn-src" module="pc"/>
<configurations defaultconfmapping="default->default">
    <conf name="default" />
    <conf name="provided" description="they are provided by the env." />
    <conf name="compile" extends="default,provided" />
    <conf name="war" extends="default"/>
</configurations>
<dependencies>

:

modA기본 및 테스트의 두 가지 구성 이 있다고 가정 해 보겠습니다 .
실질적인 문제로 conf종속성 요소 속성을 생략하는 것은 매우 드문 일 입니다. 에 대한이 종속성이있을 수 있습니다 :
ivy.xmlmodA

<dependency org="theteam" name="modB" rev="1.0" conf="default->*" />

기본 및 테스트가 아닌 기본에서 시작합니다.

The above example makes modA's default depend on modB's conf1, conf2, and conf3.
Or you might want to say that modA's default only depends on modB's conf1:

<dependency org="theteam" name="modB" rev="1.0" conf="default->*conf1*" />

I've read these answers and quite frankly I don't find them very helpful. I think they could be improved so I wrote down how I use and understand configurations by showing a practical example:

http://wrongnotes.blogspot.com/2014/02/simplest-explanation-of-ivy.html

Unfortunately, you have to understand a little about maven and its dependencies because Ivy is using Maven repositories to pull down those jar files so Ivy has to understand Maven and it passes that buck to you. But, I think I kept it real simple without going into too much detail about maven.


Thanks VonC!

It helped me alot further.

When it comes to options (configurations) tieTYT, you can find them in the ivy-[revision number].xml file in your Ivy repository under: organization name --> module name.

An example configurations element from the JUnit 4.6 revision downloaded from http://www.springsource.com/repository/app/.

<configurations>
    <conf name="compile" visibility="public" description="Compile dependencies"/>
    <conf name="optional" visibility="public" extends="compile" description="Optional dependencies"/>
    <conf name="provided" visibility="public" description="Provided dependencies"/>
    <conf name="runtime" visibility="public" extends="compile" description="Runtime dependencies"/>
</configurations>

In my project's ivy.xml file, I have a configuration compile-test. In the dependencies element I have the following dependency:

<dependency org="org.junit" name="com.springsource.org.junit"
        rev="4.6.0" conf="compile-test->compile" />

As you can see, my compile-test configuration depends on the compile configuration in the JUnit's ivy.xml file.


It helped me once to understand things this way:

  1. An ivy configuration is simply a name for some subset of the module's artifacts.
  2. Dependencies between modules are specified in terms of configuration names.

참고URL : https://stackoverflow.com/questions/652555/can-someone-explain-the-ivy-xml-dependencys-conf-attribute

반응형