Java 如何使用常春藤解决本地问题

Java 如何使用常春藤解决本地问题,java,dependencies,ivy,Java,Dependencies,Ivy,我已经用Ivy和URL解析器设置了Eclipse项目,它在办公室的web服务器上查找工件和Ivy文件。一切都很好 我有几个项目是其他项目的依赖项,我想调整Ivy配置,以便这些依赖项可以“本地发布”,并且依赖它们的下游项目可以在本地解析它们。这样做将允许开发人员在一个项目中进行更改,并看到这些更改在依赖它的另一个项目中产生涟漪;所有这些都无需发布到我们的官方(web服务器)存储库 首先,我向一个项目(我们称之为DepProj)添加了一个本地发布任务,该项目是下游项目的依赖项: <target

我已经用Ivy和URL解析器设置了Eclipse项目,它在办公室的web服务器上查找工件和Ivy文件。一切都很好

我有几个项目是其他项目的依赖项,我想调整Ivy配置,以便这些依赖项可以“本地发布”,并且依赖它们的下游项目可以在本地解析它们。这样做将允许开发人员在一个项目中进行更改,并看到这些更改在依赖它的另一个项目中产生涟漪;所有这些都无需发布到我们的官方(web服务器)存储库

首先,我向一个项目(我们称之为
DepProj
)添加了一个本地发布任务,该项目是下游项目的依赖项:

<target name="publish-locally" depends="clean,dist">
    <ivy:publish resolver="local" overwrite="true" pubrevision="${ivy.new.revision}">  
        <artifacts pattern="${distDir}/[artifact].[ext]" />   
</ivy:publish>
</target>
我现在正被连接这两个方面而窒息。我需要调整我们的
ivy.settings
文件以使用文件系统解析器。当
DepProj
在本地发布时,您可以看到它首先运行
clean
,然后运行
dist
dist
目标在
DepProj/dist/DepProj.JAR
下创建一个JAR

我想我需要将文件系统解析器(以某种方式)指向这个
dist
目录?但是,我想在本地发布的不仅仅是
DepProj

我这里有拼图的大部分部分,我只是有点连接困难


有人能把我推向正确的方向吗?一个有用的代码示例总是非常感谢!谢谢

您肯定需要定义一个并创建自己的ivysettings.xml

你必须给它一个特殊的目录,它可以在那里发布。这应该在你的项目之外

    <filesystem name="local" checkmodified="true">
        <ivy pattern="${basedir}/../repo/[module](-[branch])/[revision]/[artifact](-[branch])-[revision].[ext]" />
        <artifact pattern="${basedir}/../[module]/[revision]/[artifact](-[branch])-[revision].[ext]" />
    </filesystem>
这将通过调用以下命令自动读取:

<ivy:settings />

这将激活设置

您还可以为特殊模块创建一个链,该链首先查看文件系统,然后查看存储库:

<resolvers>
    <url name="remote"/>
    <filesystem name="local" checkmodified="true" />

    <chain name="ourOrg" dual="true" latest="time"> 
        <resolver ref="local"/>
        <resolver ref="remote"/>
    </chain>    
</resolvers>

  <modules>
    <!-- resolver für readybank module-->
    <module organisation="ourOrg" resolver="ourOrg"/>
  </modules>


IvyDe for eclipse有一个工作区解析器,它适用于在eclipse中打开的任何项目。

有一个多项目构建示例,可以在ivy源代码存储库中找到:
<ivy:settings />
<resolvers>
    <url name="remote"/>
    <filesystem name="local" checkmodified="true" />

    <chain name="ourOrg" dual="true" latest="time"> 
        <resolver ref="local"/>
        <resolver ref="remote"/>
    </chain>    
</resolvers>

  <modules>
    <!-- resolver für readybank module-->
    <module organisation="ourOrg" resolver="ourOrg"/>
  </modules>