4

アーティファクトの作成と保存にant、ivy、nexusリポジトリマネージャーを使用しています。依存関係の解決と公開など、すべてを機能させることができました。問題が発生するまで...(もちろん!)。

私はネクサスの「リリース」リポジトリに公開していましたが、これは「再デプロイを無効にする」にロックされています(設定を「再デプロイを許可」に変更した場合でも(実際にはUIが不完全です)。これが起こっていることに気付く前に、私の変更はリポジトリを介して更新されていませんでした。

とにかく、ネクサスで「スナップショット」リポジトリを使用するには、すべてを切り替える必要があります。問題は、これが私の公開を台無しにすることです。私は大規模なグーグルを含むさまざまなことを試しましたが、どこにも行きませんでした。私が得るエラーは悪いPUTリクエスト、エラーコード400です。

これを機能させている人は、私が欠けているものについての指針を教えてください。

どうもありがとう、

アラステア

fyi、これが私の設定です:

何が実際に(潜在的に)有用で、何が完全なガフであるかがわからなかったため、スナップショットを機能させる試みをすべて削除したことに注意してください。したがって、これは動作中のリリースのみのセットアップです。

また、情報提供のみを目的としてXXX-APIivy.xmlを追加したことに注意してください。xxx-commonを公開することすらできません(そしてそれは依存関係さえありません)。

Antタスク:

<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> 

内部依存関係のアイデアを与えるためのivyファイルのカップル:

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>
4

3 に答える 3

3

w00h00t。

(世界に助けを求めることには、何かカタルシスがあります。通常、応答がなくても、問題をはるかに迅速に修正します)。

とにかく、興味のある人にとっては、いくつかのことになりました。

a)すべてのリビジョンに-SNAPSHOTを追加。これには、2番目のivy.xml-> ivy.SNAPSHOT.xmlをフォークし、それをivyantタスクで明示的に参照することが含まれていました。b)これは手動での追加であるため、ビルドファイルのツリー全体を調べて、リリースフローとスナップショットフローの並列パスを提供する必要がありました。私の意見では、これは不十分です。しかし、他のタイプのフローを発明する可能性は非常に低いと思うので、これはおそらく肥大化せず、2つの並列フローが残ります。c)スナップショットの更新を確認するためにivyにさまざまなヒントを指定しました。例:リゾルバ上checkUpdated="true"changePattern=".*-SNAPSHOT"そしての追加

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

それでも、スナップショットのものとの自動統合があったらいいのにと思います。ツタの側の少しの(オプションの)賢さ。それに直面しましょう。nexusのようなMavenリポジトリは本当に便利で、私は確かにMavenのくだらないビルドプロセスを回避するためだけにivyを使用しています。私はネクサスを使うのが好きです。

ともかく。誰かがこれについてさらに質問したい場合は、遠慮なく。

于 2010-06-07T16:15:04.150 に答える
1

これが2セットの構成の問題に役立つかどうかはわかりませんが、少なくともbuild.xmlの方が少し簡単です。

ivy.xmlのinfo要素のリビジョン属性を${project.revision}として定義できます。

次に、build.xmlのivy要素のrevision ="${project.revision}"属性を省略できます。

たとえば、この別の質問に対する私の答えを参照してください: https ://stackoverflow.com/a/8853823/1148030

于 2012-01-13T16:53:11.820 に答える
0

必要な手順は、Nexusに公開するときにリビジョンに「-SNAPSHOT」を含めることだけであることに注意してください。回答に記載されている他の手順は、オプション/改善です。公開されたアイテムをプルダウンするには、リビジョンにも「-SNAPSHOT」を追加する必要があります。

于 2013-12-17T20:28:02.273 に答える