Используя Eclipse Luna с m2eclipse, у меня есть родительский проект Maven (facturas_root
) и два наследуемых от него модуля Maven (sharepoint_ws
и api_sharepoint
).Сгенерированные источники скомпилированы дважды
sharepoint_ws
должен был использоваться только для создания классов JAXWS для подключения к WebServices Sharepoint, поэтому я загрузил связанные WSDL и включил их в качестве ресурсов проекта. На этапе generate-sources
он работает правильно и генерирует источники в target\generated-sources\ws-consume\mypackage\
.
Теперь проблема в том, что я сделал api_sharepoint
импорт sharepoint_ws
зависимости, но он не обнаруживает никакого класса. Я предположил, что это потому, что сгенерированные классы не были в src/main/java
, поэтому я добавил плагин для их копирования. Теперь проблема заключается в том, что на этапе компиляции sharepoint_ws
он находит дважды исходный файл каждого класса и выдает ошибку.
Мой pom.xml -> построить
<plugins>
<!-- clean /src/main/java and /target/generated-sources -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>2.6.1</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>clean</goal>
</goals>
<configuration>
<filesets>
<fileset>
<directory>${basedir}/src/main/java/es</directory>
</fileset>
<fileset>
<directory>${basedir}/target/generated-sources</directory>
</fileset>
</configuration>
</execution>
</executions>
</plugin>
<!-- generate jaxws -->
<plugin>
<groupId>org.jboss.ws.plugins</groupId>
<artifactId>maven-jaxws-tools-plugin</artifactId>
<version>1.1.2.Final</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>wsconsume</goal>
</goals>
<configuration>
<wsdls>
<wsdl>${basedir}/resources/lists.wsdl</wsdl>
</wsdls>
<targetPackage>es.ssib.otic.facturas.sharepoint_ws</targetPackage>
<outputDirectory>${basedir}/target/generated-sources</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<!-- copy sources -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-filtering</artifactId>
<version>1.3</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/src/main/java</outputDirectory>
<resources>
<resource>
<directory>${basedir}/target/generated-sources/wsconsume</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
Для того, чтобы попытаться исключить target/generated-sources
я addded это:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<configuration>
<excludes>
<exclude>**/target/generated-sources/*.java</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
Как уже говорилось выше, я комментировать "копировать" плагин, модуль в зависимости от sharepoint_ws
не имеет доступных классов; Я использую его я получаю ошибки в размере
[ERROR]/C:/Users/s004256/рабочее пространство/facturas_root/sharepoint_ws/SRC/главная/Java/эс/БГСС/ушные/фактур/sharepoint_ws/DeleteList.java:[34,8] duplicate class: es.ssib.otic.facturas.sharepoint_ws.DeleteList
для каждого сгенерированного списка.
Благодарим за помощь. Я сделал свое изменение (мне пришлось изменить 'initialize' для' validate', чтобы он работал, m2e не распознал несколько этапов), но это не сработало; jar компилируется и со страницами в нем, но связанный модуль по-прежнему не имеет доступа к классам; похоже, проблема заключается в том, что '/ target/classes' не настроен как папка« build »(он существует в файловой системе, но не отображается в проводнике проекта). – SJuan76
Hum ... Вы говорите, что проект 'api_sharepoint' по-прежнему не может получить доступ к классам' sharepoint_ws'? Но, если 'sharepoint_ws-.jar' хорошо сгенерирован, и зависимость хорошо объявлена в 'api_sharepoint', она должна. Запустите «mvn dependency: tree» на 'api_sharepoint', чтобы проверить, соответствует ли объявление зависимости. –
С другой стороны: О проблемах с classpath Eclipse: если по какой-то причине Eclipse не распознал целевой/сгенерированный источник в качестве исходной папки, установите его вручную: щелкните по папке, покажите контекстное меню и выполните «использовать как исходная папка ". –