Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Build 常春藤和快照(Nexus)_Build_Publish_Ivy_Snapshot_Nexus - Fatal编程技术网

Build 常春藤和快照(Nexus)

Build 常春藤和快照(Nexus),build,publish,ivy,snapshot,nexus,Build,Publish,Ivy,Snapshot,Nexus,我正在使用ant、ivy和nexus repo manager来构建和存储我的工件。我设法让一切正常:依赖项解析和发布。直到我遇到问题。。。(当然!) 我在nexus中发布了一个“发布”repo,它被锁定为“禁用重新部署”(即使你将设置更改为“允许重新部署”(在我看来,这真是个蹩脚的UI)。你可以想象,在我意识到这一点之前,当我的更改没有通过repo更新时,我是多么生气 无论如何,我现在必须切换一切,才能在nexus中使用“快照”回购。问题是,这会打乱我的发布。我尝试了多种方法,包括大量的谷歌搜

我正在使用ant、ivy和nexus repo manager来构建和存储我的工件。我设法让一切正常:依赖项解析和发布。直到我遇到问题。。。(当然!)

我在nexus中发布了一个“发布”repo,它被锁定为“禁用重新部署”(即使你将设置更改为“允许重新部署”(在我看来,这真是个蹩脚的UI)。你可以想象,在我意识到这一点之前,当我的更改没有通过repo更新时,我是多么生气

无论如何,我现在必须切换一切,才能在nexus中使用“快照”回购。问题是,这会打乱我的发布。我尝试了多种方法,包括大量的谷歌搜索,但都没有得到任何结果。我得到的错误是错误的PUT请求,错误代码400

有人谁已经得到了这个工作,请给我一个指针,我错过了什么

非常感谢,

阿拉斯泰尔

仅供参考,这是我的配置:

请注意,我已经删除了让快照工作的任何尝试,因为我不知道什么是实际(潜在)有用的,什么是完全胡说八道的。因此,这是仅适用于工作版本的设置

另外,请注意,我添加了XXX-API ivy.xml仅供参考。我甚至无法发布XXX公共文件(而且它甚至没有依赖项)

蚂蚁任务:

<target name="publish" depends="init-publish">

  <property name="project.generated.ivy.file" value="${project.artifact.dir}/ivy.xml"/>
  <property name="project.pom.file" value="${project.artifact.dir}/${project.handle}.pom"/>

  <echo message="Artifact dir: ${project.artifact.dir}"/>
  <ivy:deliver 
    deliverpattern="${project.generated.ivy.file}" 
    organisation="${project.organisation}" 
    module="${project.artifact}" 
    status="integration" 
    revision="${project.revision}" 
    pubrevision="${project.revision}" /> 

  <ivy:resolve  />

  <ivy:makepom 
    ivyfile="${project.generated.ivy.file}" 
    pomfile="${project.pom.file}"/>

  <ivy:publish 
     resolver="${ivy.omnicache.publisher}" 
     module="${project.artifact}"
     organisation="${project.organisation}"
     revision="${project.revision}"
     pubrevision="${project.revision}"
     pubdate="now" 
     overwrite="true"  
     publishivy="true" 
     status="integration"
     artifactspattern="${project.artifact.dir}/[artifact]-[revision](-[classifier]).[ext]" 
     />


 </target> 

两个常春藤文件提供了内部依赖关系的概念:

XXX共同项目:

<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="com.myorg.xxx"
        module="xxx_common"
        status="integration"
        revision="1.0">
 </info>
 <publications>  
     <artifact name="xxx_common" type="jar" ext="jar"/>  
     <artifact name="xxx_common" type="pom" ext="pom"/>       
 </publications>  
    <dependencies>
    </dependencies>
</ivy-module>

XXX-API项目:

<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="com.myorg.xxx"
        module="xxx_api"
        status="integration"
        revision="1.0">
 </info>
 <publications>  
     <artifact name="xxx_api" type="jar" ext="jar"/>  
     <artifact name="xxx_api" type="pom" ext="pom"/>       
 </publications>  
    <dependencies> 
        <dependency org="com.myorg.xxx" name="xxx_common" rev="1.0" transitive="true" />
    </dependencies>
</ivy-module>

IVY Settings.xml:

<ivysettings>

 <properties file="${ivy.project.dir}/project.properties" />


 <settings
  defaultResolver="chain" 
  defaultConflictManager="all" />

 <credentials host="${ivy.credentials.host}" realm="Sonatype Nexus Repository Manager" username="${ivy.credentials.username}" passwd="${ivy.credentials.passwd}" />  

 <caches>
   <cache name="ivy.cache" basedir="${ivy.cache.dir}" />
 </caches> 

 <resolvers>
  <ibiblio name="xxx_publisher" m2compatible="true" root="${ivy.xxx.publish.url}" />
  <chain name="chain">
   <url name="xxx">  
    <ivy pattern="${ivy.xxx.repo.url}/com/myorg/xxx/[module]/[revision]/ivy-[revision].xml" />  
    <artifact pattern="${ivy.xxx.repo.url}/com/myorg/xxx/[module]/[revision]/[artifact]-[revision].[ext]" /> 
   </url>         
   <ibiblio name="xxx" m2compatible="true" root="${ivy.xxx.repo.url}"/>
   <ibiblio name="public" m2compatible="true" root="${ivy.master.repo.url}" />      
   <url name="com.springsource.repository.bundles.release">  
    <ivy pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />  
    <artifact pattern="http://repository.springsource.com/ivy/bundles/release/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
   </url> 
   <url name="com.springsource.repository.bundles.external">  
    <ivy pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />  
    <artifact pattern="http://repository.springsource.com/ivy/bundles/external/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" /> 
   </url> 
  </chain>
 </resolvers>



</ivysettings>

w00h00t


(向全世界寻求帮助是一种宣泄。通常你会更快地解决问题,即使没有回应)

无论如何,对于感兴趣的人来说,这归结为两件事:

a) 将快照添加到所有修订中。这涉及到分叉第二个ivy.xml->ivy.SNAPSHOT.xml,并在ivy-ant任务中显式引用它。 b) 考虑到这是一个手动添加,我必须遍历整个构建文件树,并为发布和快照流提供并行路径。在我看来,这是站不住脚的。但是,我想我们不太可能发明任何其他类型的流,这可能不会膨胀,2个平行流是它将停留的地方。 c) 我向ivy指定了各种提示来检查快照的更新。e、 g.解析程序上的
checkUpdated=“true”
changePattern=“.*-SNAPSHOT”
。以及增加

<modules org="myorg" name=*" resolveMode="dynamic" />

我不确定这是否有助于解决拥有两组配置的问题,但至少build.xml会简单一点

可以将ivy.xml中info元素的revision属性定义为${project.revision}

然后可以省略build.xml中ivy元素的revision=“${project.revision}”属性

请参见我对另一个问题的回答,例如:

应该注意,在发布到Nexus时,唯一必要的步骤是将“-SNAPSHOT”包含到修订版中。答案中列出的其他步骤是可选的/改进的。要下拉已发布的项目,还需要将“-SNAPSHOT”添加到修订中。

我应该注意,我已尝试将-SNAPSHOT添加到所有修订变量中。当ivy无法创建已解析的-*.xml ivy文件时,该操作失败。。。我也找不到我错过的任何地方:(“向全世界寻求帮助有一种宣泄的作用”-这叫“橡皮鸭”-:)