Я настраиваю CustomAnnotationProcessor в Java 17 во время компиляции. Я обнаружил, что способ добиться этого — добавить блок в pom.xml. Решение показывает использование
-proc:only
Как правильный способ запуска обработчиков аннотаций.
Проблема в том, что когда я устанавливаю -proc:only , я получаю эта ошибка:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project entity-validator-api-archetype: Compilation failure
[ERROR] Bad service configuration file, or exception thrown while constructing Processor object: javax.annotation.processing.Processor: Provider com.eva.CustomAnnotationProcessor not found
Но если использовать -proc:none
-proc:none
Аннотации обрабатываются.
...
Processing test...
Processing test...
[INFO] Processing: DemoApplication with value: Demo Value
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.356 s
[INFO] Finished at: 2024-09-23T06:56:05-05:00
[INFO] ------------------------------------------------------------------------
Я прочитал следующее:
-proc:none: Отключает всю обработку аннотаций.
-proc:only: Предназначен для запуска только обработчиков аннотаций.
Можете ли вы объяснить, почему он работает инвертированным способом?
Некоторое поведение Java это нелегко объяснить.
Файлы:
CustomAnnotation.java
package com.eva;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Target(ElementType.TYPE) // Use on classes
@Retention(RetentionPolicy.SOURCE) // Processed at the source level
public @interface CustomAnnotation {
String value();
}
CustomAnnotationProcessor.java
package com.eva;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.Processor;
import javax.annotation.processing.RoundEnvironment;
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.annotation.processing.SupportedSourceVersion;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.Element;
import javax.tools.Diagnostic;
import java.util.Set;
@SupportedAnnotationTypes("com.eva.CustomAnnotation") // Annotation to process
@SupportedSourceVersion(SourceVersion.RELEASE_17) // Java version
public class CustomAnnotationProcessor extends AbstractProcessor {
@Override
public boolean process(Set
4.0.0
com.eva
entity-validator-api-archetype
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
3.3.2
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter
jakarta.platform
jakarta.jakartaee-api
10.0.0
provided
mysql
mysql-connector-java
8.0.33
runtime
org.springframework.boot
spring-boot-devtools
runtime
org.bouncycastle
bcprov-jdk15on
1.70
org.springframework.boot
spring-boot-starter-mail
org.springframework.boot
spring-boot-starter-freemarker
jakarta.persistence
jakarta.persistence-api
3.1.0
org.hibernate.orm
hibernate-core
6.3.0.Final
org.springframework
spring-context
org.reflections
reflections
0.10.2
17
17
UTF-8
src/main/resources
org.apache.maven.plugins
maven-compiler-plugin
3.13.0
default-compile
-proc:none
com/eva/CustomAnnotationProcessor.java
compile-project
compile
compile
17
17
Подробнее здесь: https://stackoverflow.com/questions/790 ... nnotations
Почему -proc:none обрабатывает пользовательские аннотации? ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1727093516
Anonymous
Я настраиваю CustomAnnotationProcessor в [b]Java 17[/b] во время компиляции. Я обнаружил, что способ добиться этого — добавить блок в pom.xml. Решение показывает использование
-proc:only
Как правильный способ запуска обработчиков аннотаций.
Проблема в том, что когда я устанавливаю -proc:only , я получаю эта ошибка:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project entity-validator-api-archetype: Compilation failure
[ERROR] Bad service configuration file, or exception thrown while constructing Processor object: javax.annotation.processing.Processor: Provider com.eva.CustomAnnotationProcessor not found
Но если использовать -proc:none
-proc:none
Аннотации обрабатываются.
...
Processing test...
Processing test...
[INFO] Processing: DemoApplication with value: Demo Value
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.356 s
[INFO] Finished at: 2024-09-23T06:56:05-05:00
[INFO] ------------------------------------------------------------------------
Я прочитал следующее:
-proc:none: Отключает всю обработку аннотаций.
-proc:only: Предназначен для запуска только обработчиков аннотаций.
Можете ли вы объяснить, почему он работает инвертированным способом?
Некоторое поведение Java это нелегко объяснить.
Файлы:
CustomAnnotation.java
package com.eva;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Target(ElementType.TYPE) // Use on classes
@Retention(RetentionPolicy.SOURCE) // Processed at the source level
public @interface CustomAnnotation {
String value();
}
CustomAnnotationProcessor.java
package com.eva;
import javax.annotation.processing.AbstractProcessor;
import javax.annotation.processing.Processor;
import javax.annotation.processing.RoundEnvironment;
import javax.annotation.processing.SupportedAnnotationTypes;
import javax.annotation.processing.SupportedSourceVersion;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.Element;
import javax.tools.Diagnostic;
import java.util.Set;
@SupportedAnnotationTypes("com.eva.CustomAnnotation") // Annotation to process
@SupportedSourceVersion(SourceVersion.RELEASE_17) // Java version
public class CustomAnnotationProcessor extends AbstractProcessor {
@Override
public boolean process(Set
4.0.0
com.eva
entity-validator-api-archetype
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
3.3.2
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter
jakarta.platform
jakarta.jakartaee-api
10.0.0
provided
mysql
mysql-connector-java
8.0.33
runtime
org.springframework.boot
spring-boot-devtools
runtime
org.bouncycastle
bcprov-jdk15on
1.70
org.springframework.boot
spring-boot-starter-mail
org.springframework.boot
spring-boot-starter-freemarker
jakarta.persistence
jakarta.persistence-api
3.1.0
org.hibernate.orm
hibernate-core
6.3.0.Final
org.springframework
spring-context
org.reflections
reflections
0.10.2
17
17
UTF-8
src/main/resources
org.apache.maven.plugins
maven-compiler-plugin
3.13.0
default-compile
-proc:none
com/eva/CustomAnnotationProcessor.java
compile-project
compile
compile
17
17
Подробнее здесь: [url]https://stackoverflow.com/questions/79014508/why-is-procnone-processing-the-custom-annotations[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия