简体   繁体   English

Netbeans Maven 无法在项目上执行目标

[英]Netbeans Maven Failed to execute goal on project

I am working on a java project currently, my problem is a bit weird as yesterday my code was working fine then suddenly today when I try to build and test my code I get this error:我目前正在处理一个 Java 项目,我的问题有点奇怪,因为昨天我的代码运行良好,然后今天突然当我尝试构建和测试我的代码时,我收到此错误:

Failed to execute goal on project extraportGlobalSearch: Could not resolve dependencies for project com.api:extraportGlobalSearch:jar:1.0: Failed to collect dependencies for [org.glassfish.jersey.containers:jersey-container-grizzly2-http:jar:2.27 (compile), org.glassfish.jersey.inject:jersey-hk2:jar:2.27 (compile), junit:junit:jar:4.9 (test), com.googlecode.json-simple:json-simple:jar:1.1.1 (compile), com.fasterxml.jackson.core:jackson-annotations:jar:2.5.4 (compile), javax.servlet:javax.servlet-api:jar:3.0.1 (compile), com.google.zxing:core:jar:3.3.3 (compile), com.fasterxml.jackson.core:jackson-databind:jar:2.5.4 (compile), oracle:ojdbc:jar:11.2.0.4 (compile), org.glassfish.grizzly:grizzly-http-server:jar:2.4.0 (compile)]: Failed to read artifact descriptor for oracle:ojdbc:jar:11.2.0.4: Could not transfer artifact oracle:ojdbc:pom:11.2.0.4 from/to central (http://repo.maven.apache.org/maven2): Failed to transfer file: http://repo.maven.apache.org/maven2/oracle/ojdbc/11.2.0.4/ojdbc-11.2.0.4.pom. Return code is: 501 , ReasonPhrase:HTTPS Required. -> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

I tried to add another repo using https://repo.maven.apache.org/maven2/ url in my pom.xml but the error still persist.我尝试在我的 pom.xml 中使用https://repo.maven.apache.org/maven2/ url 添加另一个 repo,但错误仍然存​​在。 I have tried to resolve this for the past 5 hours, it would be great if anyone can help me, here is my pom.xml:在过去的 5 个小时里,我一直试图解决这个问题,如果有人能帮助我,那就太好了,这是我的 pom.xml:

<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.api </groupId>
    <artifactId>extraportGlobalSearch</artifactId>
    <packaging>jar</packaging>
    <version>1.0</version>
    <name>extraportGlobalSearch</name>

    <repositories>
      <repository>
        <id>apache2-https</id>
        <name>Apache 2 https</name>
        <url>https://repo.maven.apache.org/maven2/</url>
      </repository>
    </repositories>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.glassfish.jersey</groupId>
                <artifactId>jersey-bom</artifactId>
                <version>${jersey.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey.containers</groupId>
            <artifactId>jersey-container-grizzly2-http</artifactId>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.inject</groupId>
            <artifactId>jersey-hk2</artifactId>
        </dependency>

        <!-- uncomment this to get JSON support:
         <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-json-binding</artifactId>
        </dependency>-->

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>
            <!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
    <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1.1</version>
    </dependency>


        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.5.4</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.3.3</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.5.4</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>oracle</groupId>
            <artifactId>ojdbc</artifactId>
            <version>11.2.0.4</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.glassfish.grizzly</groupId>
            <artifactId>grizzly-http-server</artifactId>
            <version>2.4.0</version>
            <type>jar</type>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.4.3</version>
                <executions>
                       <!-- Run shade goal on package phase -->
                    <execution>
                        <phase>package</phase>
                        <goals>
                        <goal>shade</goal> 
                        </goals>

                <configuration>
                    <transformers>
                        <!-- add Main-Class to manifest file -->    
                      <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">             
                    <mainClass>com.api.GlobalSearch.Main</mainClass>
                       </transformer>
                   </transformers>
                </configuration>

              </execution>
           </executions>
            </plugin>
        </plugins>
    </build>

    <properties>
        <jersey.version>2.27</jersey.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>

Help needed.需要帮助。 Thanks in advance.提前致谢。

<packaging>jar</packaging>
<pluginRepositories>
    <pluginRepository>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
        <layout>default</layout>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <releases>
            <updatePolicy>never</updatePolicy>
        </releases>
    </pluginRepository>
</pluginRepositories>
<repositories>
    <repository>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
        <layout>default</layout>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

The issue is related to maven moving to https only: https://blog.sonatype.com/central-repository-moving-to-https该问题仅与 maven 迁移到 https 有关:https: //blog.sonatype.com/central-repository-moving-to-https

I have found that my problem was that Netbeans (8.2) was set to use the bundled maven executable (3.0.5).我发现我的问题是 Netbeans (8.2) 被设置为使用捆绑的 maven 可执行文件 (3.0.5)。 This version of maven is outdated and does not automatically reach for the https repo.此版本的 maven 已过时,不会自动访问 https 存储库。

I have a newer version installed (Apache Maven 3.5.4 (Red Hat 3.5.4-5) ) that worked by executing mvn clean install in my project's directory.我安装了一个较新的版本(Apache Maven 3.5.4 (Red Hat 3.5.4-5) ),它通过在我的项目目录中执行mvn clean install来工作。

To get Netbeans to use a different version of maven you can go to Tools->Options->Java->Maven and in Maven Home point to where your maven installation is located.要让 Netbeans 使用不同版本的 maven,您可以转到Tools->Options->Java->Maven并在Maven Home 中指向您的 maven 安装所在的位置。 For me it was /usr/bin/mvn and I had to define the path as just /usr as it seems that Netbeans expects to find a directory named bin containing the mvn executable.对我来说,它是/usr/bin/mvn ,我必须将路径定义为/usr ,因为 Netbeans 似乎希望找到一个名为bin的目录,该目录包含mvn可执行文件。

Also, related to maven moving repositories, for certain old dependencies I had to use the now insecure endpoint in my maven config:此外,与 maven 移动存储库相关,对于某些旧的依赖项,我必须在我的 maven 配置中使用现在不安全的端点:

        <pluginRepository>
            <id>Codehaus repository</id>
            <url>http://insecure.repo1.maven.org/maven2/</url>
        </pluginRepository> 

Just adding this in case it is useful to anyone.只是添加这个以防它对任何人有用。

You should update your maven version, the last maven version use https.您应该更新您的 maven 版本,最后一个 maven 版本使用 https。

  1. Download maven https://maven.apache.org/download.cgi (binary zip file) and extract it.下载 maven https://maven.apache.org/download.cgi (二进制 zip 文件)并解压。
  2. In netbeans, go to Tools -> Options -> Java -> Maven.在 netbeans 中,转到工具 -> 选项 -> Java -> Maven。 In Maven Home select Browse, and select the folder where you extract maven在Maven Home中选择Browse,然后选择解压maven的文件夹
  3. Enjoy it!好好享受!

我通过更新到最新的 maven 版本解决了这个问题,它开始使用 https 而不是 http 来下载所有的 deps。

虽然其他响应通过手动配置存储库或更新版本的 Maven 为您提供了解决方法,但问题的真正根源是 Netbeans (8.2) 已过时且不再更新,您最好迁移到 Apache Netbeans (目前为 11.3 版)。

我更改了全局 netbeans 配置工具的maven 版本工具-> 选项 -> Java -> Maven -> Maven 主页并浏览您的 Windows 系统的 maven 安装(例如 maven3.6),我认为 maven 版本嵌入 netbeans 8.2 需要更新

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM