1

依存関係をダウンロードするために、ceylon バージョン 1.2.3 の ceylon copy コマンドを使用しています。

./bin/ceylon copy --rep  "http://repo.maven.apache.org/maven2/" -out outdir "joda-time:joda-time/2.9.4"

ツールがダウンロードをスキップする結果になるのはなぜですか?

Module joda-time:joda-time/2.9.4 [1/1]) Skipped.

このツールは、特に以下を検索します。

http://repo.maven.apache.org/maven2//joda-time:joda-time/2.9.4/joda-time:joda-time-2.9.4.jar 

...しかし、それは探すべきです:

http://repo.maven.apache.org/maven2/joda-time/joda-time/2.9.4/joda-time-2.9.4.jar

論理的には、次のように動作するはずです。

./bin/ceylon copy --rep  "http://repo.maven.apache.org/maven2/" --out here --verbose --jvm "joda-time/2.9.4"

...しかし、それは私に言います:

... Module joda-time/2.9.4 not found ...

... 同様に:

./bin/ceylon copy --rep  "http://repo.maven.apache.org/maven2/" --out here --verbose --jvm "joda-time-2.9.4.jar"

...そして:

./bin/ceylon copy --rep  "http://repo.maven.apache.org/maven2/" --out here --verbose --jvm "joda-time-2.9.4"

コピー ツールで URL を正しく構築し、モジュールをローカル リポジトリにダウンロードするにはどうすればよいですか?

4

2 に答える 2

1

本当に正しい答えは、コピー ツールは Maven モジュールをコピーするためのものではないということです。

コピーツールの全体的な考え方は、コンパイル済みのモジュールがあり、おそらく依存関係があり、それを他のリポジトリにコピーしてそこで実行できるようにすることです。ユースケースによっては、コピーするかどうかにかかわらず、その依存関係を含めたい場合があります。

このシナリオでは、Maven モジュールをコピーすることはあまり意味がありません。なぜなら、a) Maven モジュールから Ceylon モジュールに何らかの形で変換されるからです (これは必ずしも簡単なプロセスではありません。そのため、これceylon import-jarを行うのに役立つ特別なツールがあります)。それ)。そして b) 同時に、インポート コードは引き続き Maven インポートを参照します。つまり、コピー ツールがこれらの Maven モジュールをコピーしたとしても、元のモジュールは引き続き Maven リポジトリのモジュールを使用します。これを機能させるには、インポートを変更してコードを再コンパイルする必要があります。

したがって、遭遇したバグは、そうしようとしてもCeylon 1.2.2です。1.2.3 コピー ツールに変更を加えたところ、Ceylon リポジトリに由来しないモジュールは常にスキップされます。そのドキュメントは、それを明確にするために更新されました。

ご報告いただきありがとうございます。

于 2016-07-22T10:31:54.957 に答える
0

名前に が含まれるモジュール:は、Ceylon 1.2.2+ では Maven モジュールとして解決されるため、--rep "http://repo.maven.apache.org/maven2/"は不要です。

ただし、結果のリポジトリにはCeylon によって解決されないoutdir/joda-time:joda-time/2.9.4/joda-time:joda-time-2.9.4.jarものが含まれているため、1.2.2 では実際には機能しません(名前に a が含まれているため、Ceylon リポジトリではなく Maven リポジトリからのみ解決しようとします)。これはバグです。:

また、依存関係をダウンロードしたり、それらを説明するために実体化したりしなかったmodule.xmlため、これは別のバグです。

ここで、Ceylon 1.2.3 (git master) で試してみると、Maven インポート用の名前空間を追加したことが原因Skippedである可能性があり、構文が次のようになる可能性があります (実際には流動的な ATM です)。それを試みた場合を除き、例外が発生するため、これは 3 番目のバグです。maven:joda-time:joda-time/2.9.4

それらを報告していただけますか?https://github.com/ceylon/ceylon/issues/new

于 2016-07-22T09:39:51.500 に答える