当前位置: 首页 > 知识库问答 >
问题:

如何将自定义罐子发布到本地阿帕奇常春藤存储库

司寇飞航
2023-03-14


我已经阅读了所有的教程和示例,但仍然无法在我的本地常春藤存储库中发布一组自定义jar
编辑:基本上,我希望与maven安装插件具有相同的行为
这是我的设置。我有一个Ant任务,它在给定的文件夹中生成jar。文件夹名称不是固定的,而是作为文件中的属性传递的。我想得到这个文件夹中的所有jar,并将它们安装到我的本地常春藤存储库中,以便在下一步使用它们
这是我的蚂蚁,我把它叫做常春藤:publish:

<project name="Install Ivy Dependencies" xmlns:ivy="antlib:org.apache.ivy.ant" basedir="." default="publish">

    <loadproperties srcFile="path_to_folder.properties"/>

 <property name="file_pattern" value="${path_to_folder}/[artifact].[ext]" />
 <property name="pub_revision" value="1.0.0" />

   <target name="resolve">
        <ivy:configure file="ivysettings.xml" />
        <ivy:resolve file="ivy.xml" />
  </target>

 <target name="retrieve-all" depends="resolve">
        <ivy:retrieve pattern="${file_pattern}" conf="*" />
 </target>

 <target name="publish"  depends="retrieve-all">
        <ivy:publish resolver="local" organisation="myOrg" update="true" overwrite="true" pubrevision="${pub_revision}">
           <artifacts pattern="${file_pattern}"/>
        </ivy:publish>
 </target>
</project>


这是我的ivysettings.xml:

<ivysettings>
  <resolvers>
      <filesystem name="local" local="true"/>
    </resolvers>
</ivysettings>


ivy.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">

  <info organisation="myOrg" module="myModule" revision="1.0.0"/>
  <publications>
    <artifact name="my-custom-jar" ext="jar" type="jar"/>
    <artifact name="my-custom-jar-source" ext="jar" type="source"/>
  </publications>
</ivy-module>

当我调用ant任务时,我得到的错误是:< br >无法发布myOrg#myModule的工件;1 . 0 . 0:Java . lang . illegalstateexception:无法发布myOrg # myModule1.0.0!my-custom-jar.jar使用本地:没有定义工件模式

共有2个答案

阎宝
2023-03-14

您需要在ivysettings中将工件模式添加到解析器。xml,类似于(ivy文档中的示例):

<ivysettings>
  <resolvers>
      <filesystem name="local" local="true">
          <ivy pattern="${ivy.settings.dir}/1/[organisation]/[module]/ivys/ivy-[revision].xml"/>
        <artifact pattern="${ivy.settings.dir}/1/[organisation]/[module]/[type]s/[artifact]-[revision].[ext]"/>
        </filesystem>
    </resolvers>
</ivysettings>
司寇嘉茂
2023-03-14

我已经成功运行了我的场景,并使用本教程解决了我的问题。在我的代码/集成中有两个主要问题。< br >首先,您不能告诉Ivy在没有提供路径的情况下发布存储库中的工件。我用文件系统解析器做到了这一点:

<filesystem name="local" local="true" transactional="local">
      <ivy pattern="${ivy.default.ivy.user.dir}/local/[module]/ivy-[revision].xml" />
      <artifact pattern="${ivy.default.ivy.user.dir}/local/[module]/[artifact]-[revision].[ext]" />
</filesystem>

愚蠢的想法是,这应该是内置的。如果您按原样复制它,则一切正常。如果配置不同,或者指向不同的位置 - 没有任何工作,也不会告诉您原因。我阅读了大量关于Apache Ivy的文档,但没有提到这些模式应该指向当地的Ivy存储库。我以为这些是应该从罐子里取走的路径。我实际上抱怨过这一点,但常春藤文档非常混乱。我也认为那里的例子是错误的。谁愿意在他们的常春藤中发布这些文物。在我的情况下,这个目录在我的存储库中!

还有第二个问题。这是一个较小的,很难看到和修复。修订参数有问题,文档也被弄乱了。如果为修订版和发布修订版指定一个相同的字符串,则工件不会在没有任何解释的情况下发布。我通过删除常春藤上的修订来修复它。xml文件。

最后,但并非最不重要的是,我没有成功地将这个“东西”作为Ant任务运行,而是使用了java-jar$IVY_jar……也许问题是因为版本问题,但我太累了,无法尝试修复。P.S.@cantSleepNow谢谢你的帮助。

 类似资料:
  • Java-Spring-骆驼 我想用服务列表发起骆驼路线。 想做下面的事情,但是< code>from方法似乎不是一个生产者。如何定义动态生产者?

  • 我无法通过终端用Ant编译源代码,因为尽管我发出了“Ant resolve or Ant retrieve”,但依赖项似乎没有正确解析? 下面是我的build.xml和ivy.xml 编译文件 ivy.xml 当我运行“ant-compile”时,on-compiling ant抱怨它找不到作为tomcat一部分的“Servlet Context”。jar或“TObject”、“THashMap”

  • 我们需要的是直接的API来设置和使用集群消息队列。我们最初的计划是使用Camel在集群JMS或ActiveMQ队列上进行消费/生产。Kafka如何使这项任务变得更容易?在任何一种情况下,应用程序本身都将在WebLogic服务器上运行。 消息传递将是点对点类型,其中有多个相同服务的实例在运行,但根据负载平衡策略,只有一个实例应该处理消息并发出结果。消息队列也是群集的,因此服务实例或队列实例的失败都不

  • Apache Kafka:分布式消息传递系统 Apache Storm:实时消息处理 我们如何在实时数据管道中使用这两种技术来处理事件数据? 在实时数据管道方面,我觉得两者做的工作是一样的。如何在数据管道上同时使用这两种技术?

  • 我目前正在与apache ivy的conf设置作斗争。也许我会先解释我想实现的目标: 我需要两种配置:编译、运行时 这是我试过的: 但它甚至无法被解析:无法解析ivy文件'...\ivy.xml': 有人能告诉我如何正确地声明conf设置,这样我就可以使用compile或runtime来解析,并获得所有jar,包括可传递的依赖项(在这个示例中,只有ivy的jar)。 使现代化 好的,谢谢你的链接。

  • 在运行Java8和Gradle6.3的Linux机器上,我需要构建一个由库混合而成的fat jar,一些库来自Maven Central,其他库来自位于存储库根部的本地目录,以及我的和: 运行和之后,如果我可以看到JAR中没有包含任何依赖项。 我的最终目标是使我的项目可执行为。我该怎么解决这个?