Ho un progetto basato su Maven, nel quale provo ad aggiungere alcune classi JAXB generate automaticamente dal plugin Maven "jaxb2-maven-plugin". Tuttavia, il mio primo taglio mi ha in un ciclo di dipendenza circolare:Gestione di classi generate da JAXB in un progetto Maven
- Poiché queste classi JAXB non vengono ancora generate, le mie altre fonti che li fanno riferimento hanno errori di compilazione.
- Poiché queste altre fonti presentano errori di compilazione, queste classi JAXB non vengono generate.
sembra che ci sono due possibilità ovvie per risolvere questo:
- Commento-out i riferimenti rotti, in modo che il progetto si basa e le classi JAXB vengono generati automaticamente. Quindi copiare le sorgenti generate da
/target
in/src/main/java
, in modo che i riferimenti ad esse non causino errori di compilazione. - Creare un progetto completamente separato, costituito da nient'altro che il materiale JAXB. Includilo come dipendenza nel mio progetto principale.
Mi manca qualcosa qui? L'opzione n. 1 sembra piatta ridicola ... che solo non può essere il modo in cui le persone usano JAXB. L'opzione n. 2 sembra più razionale, ma ancora piuttosto inefficiente e ingombrante. Devo davvero affrontare l'overhead di un progetto completamente separato solo per usare JAXB?
Esistono approcci più eleganti che gli sviluppatori utilizzano per fare riferimento a classi generate da JAXB nello stesso progetto in cui il plug-in Maven li genera?
UPDATE: Su richiesta, qui è la quota di competenza del mio POM:
<build>
<plugins>
<plugin>
<!-- configure the compiler to compile to Java 1.6 -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- The name of your generated source package -->
<packageName>com.mypackage</packageName>
</configuration>
</plugin>
</plugins>
</build>
Quando eseguo mvn clean package
, io vedo le mie fonti JAXB generati sotto il /target
sottodirectory. Tuttavia, quelle sorgenti generate non vengono automaticamente aggiunte al classpath per la fase di compilazione.
POST-RISOLUZIONE UPDATE: Si scopre che i miei problemi di compilazione avevano più a che fare con il fatto che io correvo in Eclipse, e la sua integrazione Maven ha alcuni problemi con "jaxb2-maven-plugin". Vedi this StackOverflow question per maggiori dettagli su quel problema e la sua risoluzione.
Si prega di inviare le sezioni pertinenti del POM. – jiggy