1

我正在与 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 怎么样?

谢谢!米莎

4

2 回答 2

2

让我们看看我是否理解正确..

我不能代表 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>

于 2010-06-07T04:54:15.103 回答
1

您可以使用 ivy 的打包器解析器将任何可下载的包转换为 ivy 模块。

另见常春藤综合资料库

我的示例项目包含以下文件:

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

常春藤.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>

常春藤设置.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>

打包程序.xml

这里是魔法。资源声明给出了 tar 包的位置。build 部分包含 ANT 指令,说明哪些文件要移入模块的 artifacts 部分。

<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 脚本将下载工件并将其放入 ivy 缓存中。

更新

Gradle 嵌入了 ivy,因此这个打包器解决方案应该适用于两种构建技术。看到这个答案

于 2011-09-18T19:51:23.347 回答