簡體   English   中英

常春藤對外部JAR的依賴

[英]ivy dependency on external JAR

我正在與Ivy作戰(我嘗試過Maven,但在為Hibernate設置JBoss存儲庫時遇到了更困難的事件)。

快速問題-我正在使用這個很棒的程序包: http : //ooweb.sourceforge.net/index.html

不幸的是,JAR只能通過Sourceforge獲得: http : //sourceforge.net/projects/ooweb/files/ooweb/0.8.0/ooweb-0.8.0-bin.tar.gz/download

有沒有辦法讓Ivy下載特定的JAR?

因此,可以使用Maven嗎?

或就此而言,Gradle怎么樣?

謝謝! 米莎

讓我們看看我是否正確理解你..

我不能代表Ivy,但是使用Maven,有時您必須手動將JAR安裝到存儲庫中,例如本地存儲庫,以及可能在構建軟件時使用的存儲庫。

將jar下載到驅動器上,並在命令行上執行以下操作:

mvn install:install-file -Dfile=ooweb.jar -DgroupId=ooweb -DartifactId=ooweb -Dversion=0.8.0 -Dpackaging=jar 

選擇一個您想要的更復雜的groupId,這是定義依賴項時將在pom中使用的。

設置JBoss存儲庫時,您是否遇到過某些特定問題? 我前一陣子只是在pom的末尾添加了它:

<repositories>
 <repository>
  <id>jboss</id>
  <url>http://repository.jboss.com/maven2</url>
  <releases>
    <enabled>true</enabled>
  </releases>
  <snapshots>
    <enabled>false</enabled>
  </snapshots>
</repository>
<repository>
  <id>jboss-snapshot</id>
  <url>http://snapshots.jboss.org/maven2</url>
  <releases>
    <enabled>true</enabled>
  </releases>
  <snapshots>
    <enabled>true</enabled>
  </snapshots>
</repository>

您可以使用ivy的打包程序解析器將所有可下載的程序包轉換為ivy模塊。

另請參閱常春藤綜述

我的示例項目由以下文件組成:

$ find . -type f
./build.xml
./ivy.xml
./ivysettings.xml
./repository/net.sourceforge/ooweb/0.8.0/packager.xml

的ivy.xml

聲明對ooweb模塊有依賴性的普通ivy文件:

<ivy-module version="2.0">
    <info organisation="com.myspotontheweb" module="packager_demo"/>
    <dependencies>
        <dependency org="net.sourceforge" name="ooweb" rev="0.8.0"/>
    </dependencies>
</ivy-module>

ivysettings.xml

Maven中央存儲庫已設置為默認存儲庫。 特殊的“打包程序”解析程序用於檢索ooweb模塊。

工件模式指向包含有關如何下載模塊工件的說明的打包程序文件。

<ivysettings>
    <settings defaultResolver="central"/>
        <resolvers>
           <ibiblio name="central" m2compatible="true"/>
            <packager name="packager" buildRoot="${user.home}/.ivy2/packager/build" resourceCache="${user.home}/.ivy2/packager/cache" preserveBuildDirectories="false">
                <ivy pattern="file:///${ivy.settings.dir}/repository/[organisation]/[module]/[revision]/ivy.xml"/>
                <artifact pattern="file:///${ivy.settings.dir}/repository/[organisation]/[module]/[revision]/packager.xml"/>
            </packager>
        </resolvers>
        <modules>
            <module organisation="net.sourceforge" name="ooweb" resolver="packager"/>
        </modules>
</ivysettings>

packager.xml

這是魔術。 資源聲明給出了tar包的位置。 構建部分包含ANT指令,有關將哪些文件移入模塊的工件部分。

<packager-module version="1.0">
    <property name="name" value="${ivy.packager.module}"/>
    <property name="version" value="${ivy.packager.revision}"/>
    <property name="packagename" value="${name}-${version}"/>

    <resource dest="archive" url="http://sourceforge.net/projects/ooweb/files/ooweb/0.8.0/ooweb-0.8.0-bin.tar.gz/download" sha1="d886a3d48bf4380cbec3e6f7de029f01e5c55315" type="tar.gz"/>

    <build>
        <move file="archive/${packagename}/lib/${packagename}.jar" tofile="artifacts/jars/${name}.jar"/>
    </build>
</packager-module>

注意:在后台,ivy使用XSLT樣式表從打包程序聲明中生成ANT腳本。 然后,此ANT腳本將下載工件,並將其放入常春藤緩存中。

更新

Gradle嵌入了常春藤,因此此打包程序解決方案應適用於兩種構建技術。 看到這個答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM