2009年9月11日金曜日

geronimo-jpa_2.0_spec ?

日本時間9/10夜あたりから、今までずっと使って来た AppEngine + Maven のビルドが急に通らなくなった。

1) org.apache.geronimo.specs:geronimo-jpa_2.0_spec:jar:1.0-EA2-SNAPSHOT

  Try downloading the file manually from the project website.

  Then, install it using the command: 
      mvn install:install-file -DgroupId=org.apache.geronimo.specs -DartifactId=geronimo-jpa_2.0_spec -Dversion=1.0-EA2-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file

  Alternatively, if you host your own repository you can deploy the file there: 
      mvn deploy:deploy-file -DgroupId=org.apache.geronimo.specs -DartifactId=geronimo-jpa_2.0_spec -Dversion=1.0-EA2-SNAPSHOT -Dpackaging=jar -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

  Path to dependency: 
   1) org.datanucleus:maven-datanucleus-plugin:maven-plugin:1.1.3
   2) org.datanucleus:datanucleus-jpa:jar:2.0.0-m2
   3) org.apache.geronimo.specs:geronimo-jpa_2.0_spec:jar:1.0-EA2-SNAPSHOT

geronimo-jpa_2.0_specってのがどこのリポジトリにも見当たらない。

pluginの依存を切る

今までpluginの依存をexclusionする方法を知らなかったけど、妙な記述でできたのでメモっておく。maven-datanucleus-pluginで定義されているdatanucleus-jpaへの依存を再定義しているようで気持ち悪い。

<pluginManagement>
  <plugins>
    <plugin>
      <groupId>org.datanucleus</groupId>
      <artifactId>maven-datanucleus-plugin</artifactId>
      <version>1.1.3</version>
      <dependencies>
        <dependency>
          <groupId>org.datanucleus</groupId>
          <artifactId>datanucleus-jpa</artifactId>
          <version>2.0.0-m2</version>
          <exclusions>
            <exclusion>
              <groupId>org.apache.geronimo.specs</groupId>
              <artifactId>geronimo-jpa_2.0_spec</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</pluginManagement>

今回はこれで凌げたけど、そもそもdatanucleus-jpa:2.0.0-m2に依存してしまうという状況が謎。よくよく見てみると、maven-datanucleus-plugindatanucleus-jpa二大して[1.1, 1.1.99)というバージョンの範囲(1.1-1.1.98)で指定されている。つまり、2.0.0-m2は範囲外のはずなんだよなぁ。なんでこんな動きをするのかなぁ。maven-datanucleus-pluginじゃなくてdatanucleus-enhancerを使ってみた方が良いのかなぁ。

コメントを投稿