3

我在 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>
4

3 回答 3

2

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

当你构建时,你能检查一下你的 Maven 试图连接哪个服务器吗?你应该看到类似的东西Downloading: http://whatever.com/path/to/dependencies.pom

我刚刚检查了 maven 中央仓库,没有 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

编辑

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

你有两种方法可以做到:

  1. 将您的依赖项更改为指向wicket-core(可能还有其他检票口模块)而不是wicket.
  2. 将您的依赖声明更改为拥有<type>pom</type> (因为默认为jar

我不熟悉 Wicket,但我相信方法 1 是首选。

于 2013-05-31T01:52:09.720 回答
0

检查你的 ~/.m2/settings.xml,我猜你有一个内部公司 (Nexus) 的 repo 镜像/代理设置,避免你从互联网上获取——而且这个镜像已经过时了。

如果是这种情况,有两种常见的修复方法:修复您的内部 Nexus 存储库,使其保持最新状态,或绕过 Nexus 存储库,以便从 Internet 获取

于 2013-05-31T01:40:27.457 回答
0

我刚才遇到了这个问题并解决了。我在堆栈溢出中看到了很多与此相关的问题。由于我的分辨率略有不同,我发布了这个答案。.

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

根本原因:-回购有项目中提到的依赖罐。但是依赖项又具有其他依赖项,这些依赖项在 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 依赖项和排除的非常好的文章

于 2014-04-30T08:29:24.813 回答