GW明けくらいからWicketを使っているプロジェクトをビルドするとエラーがでるようになった。
こんなエラー
[INFO] ------------------------------------------------------------------------ [ERROR] BUILD ERROR [INFO] ------------------------------------------------------------------------ [INFO] Failed to resolve artifact. Couldn't find a version in [1.3.6] to match range [1.4-rc1,) org.apache.wicket:wicket-ioc:jar:null from the specified remote repositories: central (http://repo1.maven.org/maven2), javelindev.jp (http://maven2.javelindev.jp/repository), maven.seasar.org (http://maven.seasar.org/maven2), maven2-repository.dev.java.net (http://download.java.net/maven/2), maven-repository.dev.java.net (http://download.java.net/maven/1) Path to dependency: 1) jp.tanamon:test:war:1.0.0-SNAPSHOT 2) jp.javelindev:wicketseasar2:jar:1.0-beta1 [INFO] ------------------------------------------------------------------------ [INFO] Trace org.apache.maven.lifecycle.LifecycleExecutionException: Couldn't find a version in [1.3.6] to match range [1.4-rc1,) org.apache.wicket:wicket-ioc:jar:null from the specified remote repositories: central (http://repo1.maven.org/maven2), javelindev.jp (http://maven2.javelindev.jp/repository), maven.seasar.org (http://maven.seasar.org/maven2), maven2-repository.dev.java.net (http://download.java.net/maven/2), maven-repository.dev.java.net (http://download.java.net/maven/1) Path to dependency: 1) jp.tanamon:test:war:1.0.0-SNAPSHOT 2) jp.javelindev:wicketseasar2:jar:1.0-beta1 at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:695) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:553) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:523) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.jav a:371) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:268) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137) at org.apache.maven.cli.MavenCli.main(MavenCli.java:356) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:623) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) Caused by: org.apache.maven.artifact.versioning.OverConstrainedVersionException: Couldn't find a version in [1.3.6] to m atch range [1.4-rc1,) org.apache.wicket:wicket-ioc:jar:null from the specified remote repositories: central (http://repo1.maven.org/maven2), javelindev.jp (http://maven2.javelindev.jp/repository), maven.seasar.org (http://maven.seasar.org/maven2), maven2-repository.dev.java.net (http://download.java.net/maven/2), maven-repository.dev.java.net (http://download.java.net/maven/1) Path to dependency: 1) jp.tanamon:test:war:1.0.0-SNAPSHOT 2) jp.javelindev:wicketseasar2:jar:1.0-beta1 at org.apache.maven.artifact.resolver.DefaultArtifactCollector.recurse(DefaultArtifactCollector.java:375) at org.apache.maven.artifact.resolver.DefaultArtifactCollector.recurse(DefaultArtifactCollector.java:437) at org.apache.maven.artifact.resolver.DefaultArtifactCollector.collect(DefaultArtifactCollector.java:74) at org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolveTransitively(DefaultArtifactResolver.java:3 16) at org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolveTransitively(DefaultArtifactResolver.java:3 04) at org.apache.maven.plugin.DefaultPluginManager.resolveTransitiveDependencies(DefaultPluginManager.java:1492) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:435) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678) ... 16 more [INFO] ------------------------------------------------------------------------ [INFO] Total time: 38 seconds [INFO] Finished at: Fri May 08 20:21:00 JST 2009 [INFO] Final Memory: 7M/12M [INFO] ------------------------------------------------------------------------
どうやらWicket 1.3.6が必要なライブラリと1.4-rc1以降が必要なライブラリで競合しているみたい。
ビルドしているプロジェクトのpom.xmlの一部
<!-- WICKET DEPENDENCIES --> <dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket</artifactId> <version>1.4-rc2</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket-extensions</artifactId> <version>1.4-rc2</version> <scope>compile</scope> </dependency> <dependency> <groupId>jp.javelindev</groupId> <artifactId>wicketseasar2</artifactId> <version>1.0-beta1</version> <scope>compile</scope> </dependency>
pom.xmlでは1.4-rc2を指定しているのでここではない。
となると、この3つのライブラリの依存関係に問題があるらしい。
で、いろんなところを探し回った後、.m2以下を1.3.6で検索かけたら以下のファイルがヒットした。
%USERPROFILE%\.m2\repository\org\apache\wicket\wicket-ioc\maven-metadata-central.xml
maven-metadata-central.xmlの中身
<?xml version="1.0" encoding="UTF-8"?><metadata> <groupId>org.apache.wicket</groupId> <artifactId>wicket-ioc</artifactId> <version>1.3.6</version> <versioning> <versions> <version>1.3.6</version> </versions> <lastUpdated>20090426215323</lastUpdated> </versioning> </metadata>
ここで、versionに1.3.6と書かれているのがまずい気がする。
というか、少し前のファイルでは1.4-rc2と書かれていた。
少し前のmaven-metadata-central.xml
<?xml version="1.0" encoding="UTF-8"?><metadata> <groupId>org.apache.wicket</groupId> <artifactId>wicket-ioc</artifactId> <version>1.4-rc2</version> <versioning> <versions> <version>1.4-rc2</version> </versions> <lastUpdated>20090202184423</lastUpdated> </versioning> </metadata>
なので、とりあえずversionの部分を1.4-rc2と書き換えてみた。
そうしたらビルドは成功するようになった。