2016-10-25 15 views
0


私はすべてのチュートリアルとサンプルを読みましたが、ローカルIvyリポジトリにカスタムjarのセットを公開することはできません。
編集:基本的には、maven-install-pluginと同じ動作が必要です。
これは私の設定です。私は、特定のフォルダにjarファイルを生成するAntタスクを持っています。フォルダ名は固定ではなく、ファイルのプロパティとして渡されます。私はこのフォルダ内のすべてのjarファイルを取得し、ローカルIvyリポジトリにインストールして、次のステップで使用できるようにしたいと考えています。ここ
は、私がツタを呼び出すところから私のAntのです:公開:
ローカルApache Ivyリポジトリにカスタムjarを公開する方法

<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タスクを呼び出したときに表示されるエラーは、
です。 MYORG#MyModuleというの成果物を公開することは不可能 ; 1.0.0:java.lang.IllegalStateException:MYORG#MyModuleというを公開することは不可能で、地元の使用1.0.0私-カスタムjar.jar:!

答えて

0
を定義されていないアーティファクトパターン

あなたは、(example from ivy documentation)のようなものをivysettings.xmlにレゾルバアーティファクトパターンを追加する必要があります。

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

私のivysettings.xmlにいくつかの小さなバグを修正した後、これを実行できました。とにかく私がしたいと思っていたアーティファクトを公開していませんでした。これはこう言っています:[ivy:publish]は私のカスタムjarを公開しました。jarから /my-custom-jar.jarに移動します。私が望むのは、Ivyが /my-custom-jar.jarからアーティファクトを取り出し、ローカルキャッシュ/リポジトリに公開することです.-Maven-install-pluginと同じように。 – Boyan

+0

@Boyan例示的なリゾルバ明らかに、場所を設定するには、アーティファクトパターンとアイビーパターンを変更する必要があります。回答にリンクを追加しました – cantSleepNow

+0

@canSleepNow、私はあなたのコードが例であることを知っています。私の問題はアイビーが出版することを完全に理解していないことです。私はすでにIvyドキュメンテーションを読みました。送信したリンクですが、どこに配置すればよいのかまだ分かりません。ローカルリポジトリへのパスを指定する必要がありますか?これは、すべてのシステムで異なるため、意味をなさない。また、ローカルの成果物がどこから取得され、ローカルのリポジトリにインストールされるかを指定する必要がありますか?私のivy.xmlファイルに関しては静的で、生成しません。 – Boyan

1

私は2つの大きな問題は、私の中にありました、私のシナリオを実行すると、このtutorialを使用して、私の問題を解決するために管理してきましたコード/統合。
まず、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リポジトリを指すはずはありませんでした。私はこれらが瓶を取るべき場所からの道であると思った。私は実際にこれに不平を言うが、Ivy documentationは非常に混乱している。また、私はthe examplesが間違っていると思います。 ivy.settings.dirにアーティファクトを公開したい人は誰ですか?私の場合、このディレクトリは私のリポジトリにありました!

2番目の問題がありました。それは小さいものであり、見て修正することは非常に困難です。リビジョンパラメータが間違っていて、ドキュメントがうまくいきません。リビジョンとパブリケーションリビジョンに1つの同じ文字列を指定すると、アーティファクトは何の理由もなくパブリッシュされません。 ivy.xmlファイルからリビジョンを削除して修正しました。

最後に、私はAntタスクとして "thing"を正常に実行することはできませんでしたが、java -jar $ IVY_JARを使用していました...おそらく問題はバージョンのためでしたが、修正でそれを試してみてください。 P.S. @ cantSleepNow助けてくれてありがとう。

関連する問題