Generated factory for a Maven 4 API mojo requires a no-arg constructor
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 68/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- java
- Ambito
- build-system, tooling
Direzione di ricerca
Start in DescriptorGeneratorMojo.java around line 530, following the descriptor goal's generated Factory constructor. Use the supplied constructor-injected ReproMojo to reproduce the runtime failure with Maven 4. Done means the generated factory handles the mojo's @Inject constructor, or descriptor rejects a mojo without a no-arg constructor instead of producing a failing plugin.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Affected version
4.0.0-beta-3; the code is unchanged on master
Bug description
For each Maven 4 API mojo, the descriptor goal generates a <Mojo>Factory subclass whose only constructor calls the mojo's no-arg constructor (DescriptorGeneratorMojo.java:530). A mojo that uses constructor injection and has no no-arg constructor builds cleanly, then fails when the goal runs:
Caused by: org.apache.maven.di.impl.DIException: Failed to call constructor public repro.ReproMojoFactory() to provide requested key @Named("repro:ctor-maven-plugin:1.0-SNAPSHOT:run") ReproMojoFactory
Caused by: java.lang.NoSuchMethodError: repro.ReproMojo: method 'void <init>()' not found
Reproducer, built with maven-plugin-plugin 4.0.0-beta-3 and run with Maven 4.0.0-rc-7:
@Mojo(name = "run")
public class ReproMojo implements org.apache.maven.api.plugin.Mojo {
private final Log log;
@Inject
public ReproMojo(Log log) {
this.log = log;
}
public void execute() {
log.info("constructor-injected mojo ran");
}
}
Expected: the factory mirrors the mojo's @Inject constructor and passes its parameters to super(...). Failing that, descriptor should reject a mojo without a no-arg constructor instead of producing a plugin that fails at run time.
The Maven 4 API ports in apache/maven#13302 had to switch mojos from constructor to field injection because of this.
- Lingua principale
- Java
- Stelle
- 63
- Fork
- 76
- Merge medio
- 1g 8h
- PR unite (30g)
- 19
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/maven-plugin-tools
-
`@Execute` with a custom phase or `"none"` fails descriptor extractionForse già presa @CaptainAni187 l’ha presa 21 giorni fa. Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
apache/maven-plugin-tools#1232 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
apache/maven-plugin-tools#1240 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
apache/maven-plugin-tools#1233 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
`descriptor` fails on `onlineRequired`, `dependencyCollection` and `dependencyResolutionPathScopes` in the Maven 4 API `@Mojo`Forse già presa @efegokdemir l’ha presa 19 giorni fa. Apertabug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
apache/maven-plugin-tools#1231 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
`@Resolution` fields stay null: `plugin.xml` gets no `<resolutions>`Forse già presa @goutamadwant l’ha presa 23 giorni fa. Apertabug
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
apache/maven-plugin-tools#1230 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di apache/maven-plugin-tools
Issue simili
-
Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
protobuf
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
FasterXML/jackson-dataformats-binary#874 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
HexaHexes/infinite-dungeon-spawn-safety#17 ·
I maintainer di solito rispondono entro 1 giorno