У меня возникла проблема при попытке скомпилировать проект Maven из Eclipse Mars (4.5.1).

Технические характеристики:

  • Win 7 SP1 x64
  • JDK x64 1.8.0_72
  • Затмение x64 4.5.1
  • Maven 3.3.9

Я считаю, что это проблема взаимодействия плагинов Eclipse-Maven, поскольку я могу выполнять цели с терминала, такие как:

mvn clean compile

mvn generate-sources

mvn install

В Eclipse, когда я щелкаю правой кнопкой мыши имя проекта и выбираю Maven install в качестве цели для выполнения, я получаю следующие ошибки:

Поиск проектов

...

Название-проект-1.0-SNAPSHOT ...

[ПРЕДУПРЕЖДЕНИЕ] POM для com.sun.xml.ws:jaxws-rt:jar:2.2.10 недействителен, транзитивные зависимости (если есть) будут недоступны, включите ведение журнала отладки для получения дополнительных сведений

[ИНФОРМАЦИЯ] --- jaxws-maven-plugin: 2.3: wsimport (по умолчанию) @ имя-проекта

[ПРЕДУПРЕЖДЕНИЕ] POM для com.sun.xml.ws:jaxws-tools:jar:2.2.10 недействителен, транзитивные зависимости (если есть) будут недоступны, включите ведение журнала отладки для получения дополнительных сведений

[ИНФОРМАЦИЯ] Обработка: файл: / C: / имя-проекта/src/main/resources/file.wsdl [ИНФОРМАЦИЯ] jaxws: wsimport args: [-keep, -s, C: \ имя-проекта \ цель \ сгенерированный- sources \ wsimport, -d, C: \ имя-проекта \ target \ classes, -encoding, UTF-8, -Xnocompile, "файл: / C: / имя-проекта/src/main/resources/file.wsdl"]

[ПРЕДУПРЕЖДЕНИЕ] Не удалось создать родительский проект для com.sun.xml.ws:bundles:pom:2.2.10

[ПРЕДУПРЕЖДЕНИЕ] Не удалось создать родительский проект для com.sun.xml.ws:jaxws-tools:pom:2.2.10

[ПРЕДУПРЕЖДЕНИЕ] Недействительный POM для com.sun.xml.ws:jaxws-tools:jar:2.2.10, транзитивные зависимости (если есть) будут недоступны, включите ведение журнала отладки для получения дополнительных сведений

[ИНФОРМАЦИЯ] ОШИБКА СТРОИТЕЛЬСТВА

...

[ОШИБКА] Не удалось выполнить цель org.jvnet.jax-ws-commons: jaxws-maven-plugin: 2.3: wsimport (по умолчанию) в проекте имя-проекта: выполнение цели по умолчанию org.jvnet.jax-ws-commons: jaxws -maven-plugin: 2.3: сбой wsimport: индекс строки вне допустимого диапазона: -1 -> [Справка 1]

[ERROR] Чтобы просмотреть полную трассировку стека ошибок, повторно запустите Maven с ключ -e. [ОШИБКА] Перезапустите Maven с помощью переключателя -X, чтобы включить полную журнала отладки. [ERROR] [ERROR] Подробнее об ошибках и возможные решения, пожалуйста, прочтите следующие статьи: [ERROR] [Помощь 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

Однако, если я выполню mvn install с терминала, цель будет успешной! Я думаю, что у меня есть все необходимые плагины Maven, установленные в Eclipse, и файл pom.xml правильный, так как через терминал все работает. Надеюсь, что кто-то сможет намекнуть на эту проблему.

РЕДАКТИРОВАТЬ: хотя mvn install не работает в Eclipse, если я создаю конфигурацию сборки Maven в Eclipse с целью mvn install -e, проблема не возникает. Передача этого флага каким-то образом решает эту проблему.

РЕДАКТИРОВАТЬ: я вставляю конкретный раздел pom.xml, который вызывает проблему в Eclipse (жирный текст - это то, что Eclipse подчеркивает красным):

<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">

    <modelVersion>4.0.0</modelVersion>
    <!-- http://maven.apache.org/pom.html#Quick_Overview -->

    <groupId>group.name</groupId>
    <artifactId>project-name</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>${project.artifactId}</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>

        <wsdl.directory>${basedir}/../project-dep/src/main/resources</wsdl.directory>
        <wsdl.filename>file.wsdl</wsdl.filename>

        <mainclass>group.name.subname.TestApplication</mainclass>

        <ws.url>http://localhost:8081/sample-ws/endpoint</ws.url>

        <ws.name>Sample</ws.name>
        <uddi.url>http://localhost:9090</uddi.url>
    </properties>

    <dependencies>
        <!-- JAX-WS -->
        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-rt</artifactId>
            <version>2.2.10</version>
        </dependency>
        <!-- UDDI -->
        <dependency>
            <groupId>group.name.uddi</groupId>
            <artifactId>uddi-naming</artifactId>
            <version>1.0</version>
        </dependency>
        <!-- SOAP Handlers -->
        <dependency>
            <groupId>group.name.soap</groupId>
            <artifactId>ws-handlers</artifactId>
            <version>1.0</version>
        </dependency>
        <!-- JMockit - must appear before JUnit -->
        <dependency>
            <groupId>org.jmockit</groupId>
            <artifactId>jmockit</artifactId>
            <version>1.21</version>
            <scope>test</scope>
        </dependency>
        <!-- JUnit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>src/test/resources</directory>
                <filtering>true</filtering>
            </testResource>
        </testResources>
        <plugins>
            <plugin>
                <groupId>org.jvnet.jax-ws-commons</groupId>
                <artifactId>jaxws-maven-plugin</artifactId>
                <version>2.3</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>wsimport</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- https://jax-ws-commons.java.net/jaxws-maven-plugin/wsimport-mojo.html -->
                    <wsdlDirectory>${wsdl.directory}</wsdlDirectory>
                    <wsdlFiles>
                        <wsdlFile>${wsdl.filename}</wsdlFile>
                    </wsdlFiles>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>com.sun.xml.ws</groupId>
                        <artifactId>jaxws-tools</artifactId>
                        <version>2.2.10</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.19.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>integration-test</goal>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.4.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>java</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- to prevent deprecation warning: -->
                    <killAfter>-1</killAfter>
                    <mainClass>${mainclass}</mainClass>
                    <arguments>
                        <argument>${ws.url}</argument>
                    </arguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>appassembler-maven-plugin</artifactId>
                <version>1.10</version>
                <executions>
                    <execution>
                        <phase>install</phase>
                        <goals>
                            <goal>assemble</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <programs>
                        <program>
                            <mainClass>${mainclass}</mainClass>
                            <id>${project.artifactId}</id>
                        </program>
                    </programs>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Это моя установка Maven внутри Eclipse:

enter image description here

4
Blitzkoder 9 Мар 2016 в 23:03

4 ответа

Лучший ответ

Проверьте Maven > User Settings, что User Settings указывает на тот же архив, что и ваш Maven.

Вы пробовали с ВСТРОЕННЫМ?

2
Tupac 29 Мар 2016 в 17:55

Я предполагаю, что вам нужно реорганизовать свой pom.xml:

<dependencies>
  <dependency>
   <groupId>com.sun.xml.ws</groupId>
   <artifactId>jaxws-tools</artifactId>
   <version>2.2.10</version>
  </dependency>
</dependencies>

Находится в <build></build>, что неверно. Также с ошибкой мы видим, что проблема:

Не удалось выполнить цель org.jvnet.jax-ws-commons: jaxws-maven-plugin: 2.3: wsimport

Значит, он не понял <goal> здесь, не знаю. И между плагинами в конце вы должны добавить S к <plugins>:

<plugins>
            <plugin>
                <groupId>org.jvnet.jax-ws-commons</groupId>
                <artifactId>jaxws-maven-plugin</artifactId>
                <version>2.3</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>wsimport</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- https://jax-ws-commons.java.net/jaxws-maven-plugin/wsimport-mojo.html -->
                    <wsdlDirectory>${wsdl.directory}</wsdlDirectory>
                    <wsdlFiles>
                        <wsdlFile>${wsdl.filename}</wsdlFile>
                    </wsdlFiles>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>com.sun.xml.ws</groupId>
                        <artifactId>jaxws-tools</artifactId>
                        <version>2.2.10</version>
                    </dependency>
                </dependencies>
            </plugin>
            <pluginS>

Раньше я работал с jaxws-maven-plugin, но с другим именем <groupId>, например:

 <build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxws-maven-plugin</artifactId>
                <version>1.12</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>wsimport</goal>
                        </goals>
                        <configuration>
                            <wsdlLocation>http://mysite/firstwsdl.asmx?wsdl</wsdlLocation>
                            <packageName>com</packageName>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

Попробуйте это и надеюсь, что это поможет.

0
Hohenheim 31 Мар 2016 в 08:55

Я не могу рассказать вам подробностей, но я видел оба случая, когда Eclipse работает / cmdline не работает, и наоборот, в частности со сложными универсальными шаблонами и глубоко вложенными интерфейсами.

Мне кажется, что Eclipse выполняет часть собственного синтаксического анализа / генерации байтового кода, возможно, используя tools.jar под листами, но я никогда не копал достаточно глубоко (тем более, что я предпочитаю IntelliJ, который использует собственный maven и JVM и нет этой проблемы).

В конце концов, вы не можете доверять Eclipse, единственный способ узнать наверняка - это генерация cmdline (как вы уже испытали).

0
Scott Sosna 9 Мар 2016 в 23:14

Прежде всего, если он отлично работает в консоли, у вас есть проект, который можно импортировать в любую среду IDE, поддерживающую проекты Maven. Это хорошие новости.

Во-вторых, проверьте, совпадает ли выбранный профиль maven (конфигурация репозитория, ...) в консоли и в Eclipse.

Затем вы можете проверить свою конфигурацию в settings.xml (в каталоге .m2)

Возможно, этот предыдущий ответ тоже может помочь: Maven игнорирует конфигурацию выполнения

3
Community 23 Май 2017 в 11:53