문제

가 잘 확립을 공유하는 방법 개미 대상 프로젝트 간?저는 솔루션을 현재,하지만 조금 우아하지 못.여기에 나는 지금까지.

나는 이라는 파일 ivy-tasks.xml 서버에 호스팅된 우리의 네트워크입니다.이 파일에 포함되 다른 대상,상용구 작업을 관리하기 위한 프로젝트 종속성으로 아이비.예를 들어:

<project name="ant-ivy-tasks" default="init-ivy"
         xmlns:ivy="antlib:org.apache.ivy.ant">
  ...
  <target name="ivy-download" unless="skip.ivy.download">
    <mkdir dir="${ivy.jar.dir}"/>
    <echo message="Installing ivy..."/>
    <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
         dest="${ivy.jar.file}" usetimestamp="true"/>
  </target>

  <target name="ivy-init" depends="ivy-download"
          description="-> Defines ivy tasks and loads global settings">
    <path id="ivy.lib.path">
      <fileset dir="${ivy.jar.dir}" includes="*.jar"/>
    </path>
    <taskdef resource="org/apache/ivy/ant/antlib.xml"
             uri="antlib:org.apache.ivy.ant"
             classpathref="ivy.lib.path"/>
    <ivy:settings url="http://myserver/ivy/settings/ivysettings-user.xml"/>
  </target>
  ...
</project>

이 파일 호스팅이기 때문에 나 하고 싶어합니다.

  • 체크 파일로 모든 프로젝트가 필요 그것이 결과에 중복을 만들고,유지 대상을 어렵습니다.
  • 나 build.xml 에 따라 달라집인 프로젝트에서 원본어-이것은 빌드가 더 XML 에서 최상위를 파일에 액세스합니다.

내가 무엇을 가진 이 파일에서 내로젝트 빌드.xml 은 따라 라인:

<property name="download.dir" location="download"/>
<mkdir dir="${download.dir}"/>
<echo message="Downloading import files to ${download.dir}"/>

<get src="http://myserver/ivy/ivy-tasks.xml" dest="${download.dir}/ivy-tasks.xml" usetimestamp="true"/>
<import file="${download.dir}/ivy-tasks.xml"/>

"Dirty"이는 내가 위의 단계를 외부 대상의, 기 때문에, 가져오기 작업 야에서 최고 수준입니다.Plus,내가 여전히 포함하는 이 XML 에서 모든 build.xml 가 필요한 파일이(즉거기는 아직 일부 금액의 중복).

그의 위에 있을 수 있습 추가적인 상황이 어디에 있는 일반적(non-아이비)작업 언어를 사용하고 있는데,가져옵니다.면 이러한 제공을 사용하여 작업을 Ivy 의 종속성 관리 난 여전히 문제 때문에 시간으로 나가 해결된 종속가 될 수 있는 것을 내부의 대상에 나 build.xml 과 데이터를 가져올 수 없습니다(때문에 제약 조건이 있습니다.)

더 나은 솔루션을 위해 내가 무슨 노력을 달성할?

도움이 되었습니까?

해결책

Ant 1.8+를 사용하는 경우 호스팅 된 위치에서 Build.xml을 직접 가져올 수 있습니다.

http://ant.apache.org/manual/tasks/import.html

ANT 1.8.0이므로 작업은 URL 또는 ClassPath 리소스 (실제로 URL)에서 리소스를 가져올 수도 있습니다. 현재 빌드 파일의 소스가 파일인지 URL인지 여부를 알아야하는 경우 값이있는 ant.file.type.projectName (위의 ANT.File.Type.BuildDocs와 동일한 예제 사용)을 참조 할 수 있습니다. "파일"또는 "URL".

<!-- importing.xml -->
<project name="importing" basedir="." default="...">
  <import file="http://myserver/ivy/ivy-tasks.xml"/>
</project>

다른 팁

사용하는 경우 antlibs 항아리 파일 내부에 모두 패키지 할 수 있습니다. 그런 다음이 파일을 간단히 복사하십시오 ${ANT_HOME}/lib 그것들을 사용하는 디렉토리.

후에는 몇 가지 추가 검색 가능한 솔루션을 사용하는 것입 SVN 외부 부품 을 확인하는 특정 필요할 수 있는 파일에 필요한 build.xml.

그러나,이만 작품에 대한 사용자는 사용 전복으로 원본을 제어합니다.여전히 좋은 것을 SCM-독립적 솔루션에 대한 사용자는 사용하지 않는 파괴,또는 다른 SCM 지원하는 비슷한 기능을 수행할 수 있습니다.

우리가 한 일은 사무실의 다른 프로젝트에 필요한 다양한 XML 파일을 포함하는 '부트 스트랩'이라는 프로젝트를 만드는 것입니다. 따라서 개발 환경을 설정하려면 Butstrap에서 Build.xml을 실행하여 XML 파일 (아이비 스터프 및 기타 대상)을 알려진 위치에 복사 한 다음 빌드 파일을 다음과 같이 포함합니다.

<import file="${ant.bootstrap.dir}/ant-commons.xml" />
<import file="${ant.bootstrap.dir}/ant-commons-ear.xml" />

Bootstrap build.xml에는 다음과 같습니다.

<target name="install">
        <fail unless="ant.bootstrap.dir" message="ant.bootstrap.dir ${missing.property.message}"/>
        <copy todir = "${ant.bootstrap.dir}">
            <fileset dir = "src/xml"/>
        </copy>
</target>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top