Dies ist mehr von Wissensaustausch als eine Frage zu stellen. Dachte, dieses kleine Ant-Snippet könnte für jemanden nützlich sein.So erstellen Sie eine jaxb.index-Datei im laufenden Betrieb mit Ant (oder Maven)
<target name="create-jaxb-index" depends="compile">
<!-- Create a suitable jaxb.index file on the fly to remove the need for an ObjectFactory
jaxb.index is a simple list of the domain objects without package or extension, e.g.
org.example.Domain.java -> Domain
-->
<fileset id="domain-sources" dir="${src}">
<include name="org/example/*.java"/>
</fileset>
<pathconvert property="domain-list" refid="domain-sources" pathsep="${line.separator}">
<chainedmapper>
<flattenmapper/>
<globmapper from="*.java" to="*" casesensitive="false"/>
</chainedmapper>
</pathconvert>
<echo file="${target}/classes/org/example/jaxb.index" message="${domain-list}"/>
</target>
OK, OK, damit es nicht den ganzen Weg gehen und speichern alle Paketnamen, so dass sie die entsprechende Dateistruktur rekonstruieren können, aber es ist gut genug, um Ihnen den Einstieg.
Ich hoffe, es hilft.
Auch könnten Sie einfach einfügen dieses kleine Schnipsel (weniger das Zielelement) in eine Maven bauen wie folgt aus:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<phase>compile</phase>
<configuration>
<tasks>
<!-- Create a suitable jaxb.index file on the fly to remove the need for an ObjectFactory
jaxb.index is a simple list of the domain objects without package or extension, e.g.
org.example.Domain.java -> Domain
-->
<fileset id="domain-sources" dir="${build.sourceDirectory}">
<include name="org/example/domain/*.java"/>
</fileset>
<pathconvert property="domain-list" refid="domain-sources" pathsep="${line.separator}">
<chainedmapper>
<flattenmapper/>
<globmapper from="*.java" to="*" casesensitive="false"/>
</chainedmapper>
</pathconvert>
<echo file="${build.outputDirectory}/org/example/domain/jaxb.index" message="${domain-list}"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Danke, das ist nützlich! Wenn Sie mit einem Haar aus dem beabsichtigten Rahmen eines Rahmens herauskommen, treten Sie in eine Hölle von Macken und Hacks ein. Manchmal habe ich das Gefühl, dass ich über Java, Maven, Groovy usw. müde bin. – boumbh
@boumbh Ich bin froh, dass ich helfen kann. Eine Möglichkeit, die überwältigende Komplexität der Webentwicklung zu reduzieren, besteht darin, andere Sprachen zu testen. –
Wenn ich nur eine Wahl hätte ^^. Ich bemerke die heutige Tendenz, Vorschlaghämmer zum Knacken von Nüssen zu verwenden. JAXB ist ein sehr leistungsfähiger Vorschlaghammer, er knackt meine Nüsse sehr gut (ohne negative Konnotation), aber manchmal vermisse ich die einfache Handhabung eines einfacheren Werkzeugs. Die Problematik wäre mit einer anderen Sprache anders gewesen. Nicht unbedingt besser. Manche sagen: "Ein schlechter Arbeiter macht immer seine Werkzeuge verantwortlich. Ein guter Arbeiter hat die richtigen Werkzeuge." Wenn ich meine Werkzeuge nicht wählen kann, bin ich ein schlechter Arbeiter. – boumbh