У меня есть проект maven в eclipse и цели maven, которые запускают процессоры аннотаций для генерации кода. Папка вывода для этого кода - target / generated-sources / apt.
Чтобы eclipse смог увидеть этот сгенерированный код, мне нужно добавить target / generated-sources / apt в качестве исходной папки в проект eclipse.
Однако это вызывает ошибку типа «Проблема конфигурации Maven», говорящая
Конфигурация проекта устарела с pom.xml. Запустить обновление конфигурации проекта
Думаю, я понимаю, почему это так, поскольку eclipse имеет другой набор исходных папок, чем набор maven. Но мне нужен этот другой набор, так как мне нужно eclipse, чтобы иметь возможность видеть сгенерированные исходные папки ...
При построении чистого maven эти исходные папки будут включены в сборку maven.
Кстати, я обновился до официального выпуска eclipse плагина maven eclipse, m2e 1.0 - того, что раньше было m2eclipse. Я хотел бы посмотреть, смогу ли я найти обходное решение / решение этой проблемы с помощью плагина m2e, прежде чем мне придется вернуться к старой версии m2eclipse.
m2e connector for build-helper-maven-plugin
оно установлено в Eclipsebuild-helper-maven-plugin
с<version>
определяется как3.2.0
(последняя , как в письменной форме), нет необходимости использовать Apt m2e Connector. В настоящее время мы работаем над Eclipse IDE 2020-06, используя встроенный Maven 3.6.3 в Eclipse, и наши проблемы с исходной папкой, имеющей исключения (**), исчезли после попытки добавить пути к каталогам исходных папок. Теперь все включения имеют (** / *. java) в них.Щелкните правой кнопкой мыши сообщение об ошибке:
в представлении «Проблемы», выберите « Быстрое исправление» и нажмите « Готово», чтобы выбрать конфигурацию проекта обновления по умолчанию . Это исправляет.
источник
После перехода на новые версии m2e / maven / apt ... у меня были ошибки сборки из-за дублирования файлов, вызванных добавлением пути сборки с помощью buildhelper, поэтому мне нужно было удалить "apt-сгенерированные" -Folders из buildhelper.
Чтобы устранить проблему в Eclipse, не добавляя папку «apt-generated» через «Обновить конфигурацию Maven» в M2E, я написал подключаемый модуль M2E для решения этой проблемы. Он добавляет outputDirectories, настроенные в maven-apt-plugin, в путь сборки проекта.
https://apt-m2e.googlecode.com
источник
В m2e 1.0 изменилась обработка плагинов Maven. Возможно, вам не хватает определенного расширения m2e для вашего плагина генерации кода. Вот вся документация, которую мне удалось найти.
Этот отчет об ошибке также может иметь отношение.
источник
https://bugs.eclipse.org/bugs/show_bug.cgi?id=350081
запрос на CXF JIRA (см. 1 ) для добавления сопоставлений жизненного цикла в самом cxf-codegen-plugin. Для этого потребуется m2e 1.1, но я считаю, что это лучший подход, чем создание коннекторов вне проекта cxf, предполагая, что API отображения жизненного цикла будет меняться реже, чем cxf-codegen-plugin и cxf.
источник
Вы также можете использовать коннектор buildhelper m2e, доступный в каталоге Discovery. Я использую Eclipse 3.7
источник
Eclipse Java EE IDE для веб-разработчиков. Версия: Juno Service Release 1
работают отлично.
Но в eclipse у меня такая же ошибка в классе Asinc.
Просто нажмите F5 на проекте. Устраните эту проблему.
источник
Я обнаружил, что это хорошо работает с Spring 3.1.1, в которой также есть версия 3.0.6. Как только я установил плагины и поместил их в правильную область pom и включил argline и endorseddirs, чтобы источники java были помещены в папку target / generated-sources / cxf, maven сгенерировал источники в порядке.
....
<properties>... <dependencyManagement> <dependencies>..... </dependencyManagement> <dependencies> <dependency>.... </dependencies> <!-- *************************** Build process ************************************* --> <build> <finalName>eSurety</finalName> <plugins> <!-- Force Java 6 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.4</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <!-- Deployent on AS from console <plugin> <groupId>org.jboss.as.plugins</groupId> <artifactId>jboss-as-maven-plugin</artifactId> <version>${version.jboss.as.maven.plugin}</version> </plugin> --> <!-- wildbill added tomcat plugin --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.0</version> </plugin> <!-- Surefire plugin before 2.9 version is buggy. No need to declare here, it's being referenced below w/ the version <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.12</version> </plugin> --> <!-- developer added these --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArguments> <endorseddirs>target/generated-sources/cxf</endorseddirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.12</version> <configuration> <forkMode>once</forkMode> <argLine>-Djava.endorsed.dirs=target/generated-sources/cxf</argLine> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArguments> <endorseddirs>target/generated-sources/cxf</endorseddirs> </compilerArguments> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> <forkMode>once</forkMode> <argLine>-Djava.endorsed.dirs=target/generated-sources/cxf</argLine> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <configuration> <artifactItems> <artifactItem> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.2</version> </artifactItem> <artifactItem> <groupId>javax.xml.ws</groupId> <artifactId>jaxws-api</artifactId> <version>2.2</version> </artifactItem> </artifactItems> <outputDirectory>target/generated-sources/cxf</outputDirectory> </configuration> </plugin> </plugins> </build> <!-- *********************** Profiles ************************************ --> <profiles> <profile> <!-- When built in OpenShift the 'openshift' profile will be used when invoking mvn. --> <!-- Use this profile for any OpenShift specific customization your app will need. --> <!-- By default that is to put the resulting archive into the 'deployments' folder. --> <!-- http://maven.apache.org/guides/mini/guide-building-for-different-environments.html --> <id>projName</id> <build> <plugins> <plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin</artifactId> <version>2.5.2</version> <executions> <execution> <id>process-sources</id> <phase>generate-sources</phase> <configuration> <fork>once</fork> <additionalJvmArgs>-Djava.endorsed.dirs=target/generated-sources/cxf</additionalJvmArgs> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-xjc</artifactId> <version>2.2</version> </dependency> </dependencies> </plugin> <!-- Actual war created in default target dir --> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.2</version> </plugin> </plugins> </build> </profile> </profiles>
Если ваша папка wsdl находится в $ {basedir} / src / main / resources, она найдет ее автоматически.
Надеюсь это поможет! ~ wildbill
источник
В случае, если по какой-то причине вы не можете использовать плагин помощника по сборке самым простым способом (хотя и не таким удобным и несколько утомительным), я обнаружил, что с этим можно справиться:
mvn install
. Теперь обновите родительский проект, щелкнув правой кнопкой мыши и выбрав Maven-> Обновить проект ...Обычно это хорошо работает для проектов, которые используют полустатический источник для генерации кода, такой как SOAP WSDL (Apache CXF) или код, созданный из базы данных (jOOQ). Для APT и другого AspectJ-подобного кода это не работает, потому что вы часто редактируете исходный код.
источник
конфигурация плагина помощника сборки действительно сработала для нас.
но имейте в виду, что папка назначения всегда должна соответствовать конфигурации плагина, который вы используете для самой обработки аннотаций.
например, плагин maven-processor-plugin по умолчанию использует целевую папку $ {project.build.directory} / generated-sources / apt. если вы хотите другое место назначения для ваших сгенерированных исходных файлов, вы можете установить его с помощью тега, как показано ниже.
<plugin> <groupId>org.bsc.maven</groupId> <artifactId>maven-processor-plugin</artifactId> <version>2.1.1</version> <executions> <execution> <id>process</id> <goals> <goal>process</goal> </goals> <phase>process-sources</phase> <configuration> <defaultOutputDirectory>apt_generated</defaultOutputDirectory> <processors> <processor>com.any.processor.invoker</processor> </processors> </configuration> </execution> </executions> </plugin>
источник
Вот решение
источник