私の会社は私に解決すべき面白い問題を与えてくれました。私たちは内部のArtifactoryサーバを持っています。理由のため、そのサーバーはインターネットにはまったく存在しませんが、すべてが構成されると、会社内のすべての製品のすべての依存関係管理が提供されます。ライブラリがOUR artifactory serverにない場合は、ビルドとMavenの中心を爆破し、典型的なユーザーのためにすべてのミラーがファイアウォールでブロックされます。 OK? OK。推移的な依存関係を別々に管理する
したがって、承認されたライブラリとそのトランジェントは、Maven CentralからArtifactory Serverに移行することになります。私たちのサーバーはインターネット上になくて決してないので、マネージャーのワークステーションで行う必要があります。
理由から、プライマリライブラリとその依存関係を分離する必要があります。 artifactory以内に、我々は2つのリポジトリを持っているので、それは次のようになります。
third-party <- approved libraries
transients <- transient dependencies of approved libraries
だから、かなりのpythonで最初からこれを実行しようとするよりも、私はGradleのでこれをやってのけることができるように願っています。ここに私がしたいことがあります。
タスク1.ライブラリが承認されると、マネージャは特殊なgradleビルドファイルに進みます。彼らは、他のJavaアプリケーションと異なり、依存関係としてライブラリの典型的な情報を入力します(複数入力することもできますが、入力したように進んでいます)。彼らはタスクを実行します。タスクは、ビルドの下に2つのフォルダを作成します。 Build/thirdparty
,build/transient
。これは、入力したファイルをthirdpartyフォルダに直接送ります。これは、完全なダウンロード、lib、ソース、jar、pom everythingとなります。基本的には、Mavenリポジトリのクローンです。次に、一時的な依存関係のいずれかに対して、一時的なフォルダー内で同じことを行います。
タスク2:ユーザーがプライベートネットワークに戻ったら(ほとんどの場合、通りを歩くことになります)、2番目のタスクを発行します。そのタスクはbuild/thirdpartyのすべてをとり、artifactory.com/thridpartyリポジトリにインストールします。次に、一時フォルダからすべてを取り出し、artifactory.com/transientリポジトリにインストールします。
キーがファイルをダウンロードしています。私は言うことができるgradleの方法は、このフォルダとそのフォルダ内のトランジェントに直接扶養家族を入れているのですか?私は、レポートプラグインをハックし、探しているものをイムにその変換しない限り、
--edit
ImはGradleの3.0のソースを読んで、私は運のうち、イムと思うが、私はここで沈没の感覚を得ます。
シンプルなのはいかがですか。 libsをフォルダに入れるためにgradleを取得することは、ケーキです。 Mavenの中央POMファイルをフォルダに入れるにはどうすればいいですか?私がgradle prime-cache
を行うことができるタスクを作成して、それが依存関係のjar、pom、src、およびjavadocsをプルダウンして、それらを私の選択したフォルダにプルした場合、私はPythonで残りの作業を行うことができます。
*推移的な依存関係を意味すると思われますか? –
いや、長い日。 DependencyResolutionListenerは、直接依存性と推移依存性を区別しないようです。この作業を行う唯一の方法は、transitive = falseを設定したbuild.gradleを生成し、サードパーティのフォルダに入れ、transitive = trueの別のgenを作成するpythonスクリプトを作成し、それを私の推移性にコピーし、そこから直接の依存関係を削除してください。 – scphantm