Maven无法解析我可以在存储库中看到的jar

时间:2013-05-31 01:26:24

标签: maven wicket

我在我的pom.xml中指定了wicket版本1.5-RC7。当我做mvn install时,它抱怨:The following artifacts could not be resolved: org.apache.wicket:wicket:jar:1.5-RC7, javax.transaction:jta:jar:1.0.1B。所以我尝试在mvnrepository.com上搜索javax.transaction.jta-1.0.1B.jar,我能够找到它。为什么maven告诉我它无法解析avax.transaction:jta:jar:1.0.1B?

我的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    …
    <repositories>
        <repository>
            <id>mvnrepository</id>
            <url>http://repo1.maven.org/maven2</url>
        </repository>
    </repositories>

    <dependencies>
        <!-- WICKET DEPENDENCIES -->
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket</artifactId>
            <version>${wicket.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-spring</artifactId>
            <version>${wicket.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-extensions</artifactId>
            <version>${wicket.version}</version>
        </dependency>
        …       
    </dependencies>
    </build>
    <properties>
        <wicket.version>1.5-RC7</wicket.version>
        ...
    </properties>
</project>

3 个答案:

答案 0 :(得分:2)

首先,http://repo1.maven.org/maven2是Maven将查找的默认值。你不需要再次声明它。

您可以在构建时检查Maven尝试连接的服务器吗?您应该看到类似Downloading: http://whatever.com/path/to/dependencies.pom的内容。

我刚刚检查过maven central repo,没有org.apache.wicket:wicket:1.5-RC7。您最好检查是否已声明正确的依赖

对于JTA来说,这有点棘手。对于一些Java规范JAR,由于许可问题,实际的JAR在公共中心Maven仓库中不可用。如果你看http://search.maven.org/#artifactdetails|javax.transaction|jta|1.0.1B|jar,你会看到它只包含POM,但不包含JAR。

有一些方法可以解决:

  1. 如果您在自己公司拥有Maven回购,请考虑从Sun / Oracle获取JAR,并自行部署
  2. 对于JTA规范本身,JAR适用于较新版本(1.1)。检查您是否可以使用后一种规格
  3. 切换到使用Geromino规范。它应该兼容。 http://search.maven.org/#search|gav|1|g%3A%22geronimo-spec%22%20AND%20a%3A%22geronimo-spec-jta%22

  4. 修改

    我在之前的搜索中错过了wicket 1.5-RC7。抱歉。在查看POM之后,它似乎不是JAR POM。 org.apache.wicket:wicket:1.5-RC7的类型为POM,其中声明了对wicket-core工件的依赖。

    您有两种方法:

    1. 将您的依赖项更改为指向wicket-core(可能还有其他wicket模块),而不是wicket
    2. 将您的依赖关系声明更改为<type>pom</type>(因为默认为jar
    3. 我不熟悉Wicket,但我相信方法1是首选。

答案 1 :(得分:0)

检查你的〜/ .m2 / settings.xml,我猜你有一个内部公司(Nexus)repo mirror / proxy设置,避免你从网上取货 - 这个镜子是陈旧的。

如果是这种情况,有两种常见的解决方法:修复内部Nexus仓库,使其保持最新状态,或绕过Nexus仓库以便从互联网上取货

答案 2 :(得分:0)

我刚刚面对这个问题并解决了它。我已经看到很多与此相关的堆栈溢出问题。由于我的决议略有不同,我发布了这个答案。

问题: - 无法在项目Apigee-Edge-deploy-plugin上执行目标:无法解决项目的依赖关系io.apigee.build-tools.enterprise4g:Apigee-Edge-deploy-plugin :maven-plugin:1.0.0:无法解析以下工件:

根本原因: - Repo有项目中提到的依赖项jar。但依赖关系依次具有其他依赖关系,这些依赖关系并不存在于repo中并导致此问题。我添加了对依赖项的排除,它起作用了。

<强>例如: -

     <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-metadata</artifactId>
        <version>1.3</version>
        <type>jar</type>
        <scope>compile</scope>
        <exclusions>
            <exclusion>
                <artifactId>woden</artifactId>
                <groupId>org.apache.woden</groupId>
            </exclusion>
        </exclusions>
    </dependency>

<强>参考: - 另外,请查看关于maven依赖关系和排除的非常好的文章