3

Grails で小さな Web フロントエンドを開発しています。これは基本的に、JMS を介して非同期に接続される「超軽量」クライアント アプリです。

プロジェクトには、Maven リポジトリからプルしたい 2 つの依存関係があります。これらはactivemqおよびacme-adapter-apiであり、社内の依存関係であり、リモート リポジトリでは利用できません。

依存関係にアクセスするために、 BuildConfig.groovy( Grails 1.2M4 ) ファイルを次のように設定します。

repositories {
    grailsPlugins()
    grailsHome()
    mavenCentral()
    mavenRepo('D:/maven-repo')
} dependencies {
    compile 'org.apache.activemq:apache-activemq:4.1.1'
    compile 'com.acme:acme-adapter-api:1.3-SNAPSHOT'
}

を実行するgrails dependency-reportと、 に関する次の行が表示acme-adapter-apiされます。たとえば、次のようになります。

acme-adapter-api by com.acme  
108 kB (0 kB downloaded, 108 kB in cache)

を実行しようとすると、グループgrails compileからクラスを解決できないと不平を言うので、幸運ではありません。com.acme

興味深いことに、activemq依存関係は問題ではないようです...

違いは、acme の依存関係が ではなくmavenCentral()、 だけにあることmavenRepo("D:/maven-repo")です。そこで、「ローカル ディスクから取得していない可能性があります...」と考え、バージョンを、ファイルに存在しない面白い (1.999-SNAPSHOT) 値に変更しましたBuildConfig.groovy。再度実行grails compileすると、バージョンが見つからないと言ってコマンドがタイムアウトしました。

UNRESOLVED DEPENDENCIES
D:/maven-repo: unable to get resource for com/acme#acme-adapter-api;1.999-SNAPSHOT

したがって、明らかにローカル依存関係は解決されますが、次のステップであるコンパイルではどういうわけか適用されません...

4

2 に答える 2

5

Grails1.3.6はIvy2.2で更新され(https://issues.apache.org/jira/browse/IVY-938の修正が適用されたことを示しています)、「changeing」を指定すると、SNAPSHOTバージョンの更新を取得できます。 = true "、次のように:

dependencies {
  runtime ('groupId:artifactId:version-SNAPSHOT') {
    changing = true
  }
}
于 2011-01-19T18:38:09.253 に答える
0

問題は、アーティファクトの空でないキャッシュであることが判明しました。activemq jar ファイルは変更されていませんが、acme-adapter-api.jar は実際に何度も変更されていますが、上記のケースでは Maven ビルド ID 1.3 は増加していません。

ビルド番号を 1.4-SNAPSHOT に増やしたときに修正できました...

2 つの質問が残っています。

  1. まったく同じ理由で、常にSNAPSHOT バージョンをフェッチする Maven 契約ではありませんか?
  2. キャッシュを強制的に空にする方法は? そして、それはどこにあるのか?

ここでパート2に答えるために新しい質問を開きます

于 2009-12-08T15:36:20.123 に答える