1

アーティファクトをローカルのアイビー リポジトリに公開するプロジェクトを gradle でビルドしました。歴史的に、私たちはすべてをローカルに保ちたいので、gradle を flatDir リポジトリでのみ使用してきました。ただし、生成されたアーティファクトをどこにでもコピーするよりも、ツタを使用する利点が見られ始めています。

アーティファクトを ivy に簡単に公開できますが、リポジトリを使用してこのアーティファクトをプルする他のプロジェクトは、一時的な flatDir 依存関係で失敗します。

これらの一時的な依存関係を処理する最善の方法を見つけようとしています。アーティファクトが使用するクラスがあるため、アーティファクトを使用するすべての人がそれらを必要とすることは明らかです。アーティファクトを含む一時的な依存関係を ivy に公開する必要がありますか? これを行う最善の方法は何ですか?

私は試みました(私はハックと考えています)flatLibディレクトリのjarファイルをアーティファクト自体として宣言しました:

group 'utils'

repositories {
    flatDir {
        dirs 'lib'
        name 'librepo'
    }
}

dependencies {
    compile ":antlr:3.4"
    // ...
}

artifacts {
    project.repositories.librepo.dirs.each { dir ->
        dir.eachFile {
            if (it.isFile()) {
                archives file(it)
            }
        }
    }
}

ただし、flatDir ファイルはメインのアーティファクト (この場合は「utils」) と同じグループにアップロードされますが、依存関係セクションでグループなしで定義されているため、アーティファクトを含むプロジェクトは失敗します。 xml には org 値がありません。つまり、

<dependency org="" name="antlr" rev="3.4" conf="compile->default"/>

私は何かが欠けていると思います.flatDirとivyを混ぜる方法について助けていただければ幸いです.

flatDir の依存関係を ivy に移行して正しく解決する必要がありますか? その後、ビルドを変更して、発行先の ivy リポジトリのみをソースとして使用することもできますか? より良い方法は思いつきませんが、これを行うと、すべての依存関係がメイン プロジェクト ディレクトリの lib ディレクトリから ivy に移動する必要があるという点でかなりの影響があります。サードパーティのライブラリではなく、ivy リポジトリを使用して、生成されたアーティファクトを管理します。

4

1 に答える 1

1

完全を期すために、これに対する適切な解決策を見つけることができず、この記事の助けを借りて、すべての lib/jar も ivy に移動することになりました。それでも、この質問は私にタンブルウィード賞をもたらしました!

于 2012-09-05T07:16:39.140 に答える