Maven Wohin mit generated-sources

B

bygones

Gast
Hallo,

wir haben corba files bei uns rumliegen, die mit einem propritären System in java files gewandelt werden müssen und dann für das Projekt bereitstehen müssen.

Der Prozess an sich ist nicht das Problem, doch wohin legt man die generierten Javadateien ? Gibt es da ein Maven-default ala /src/main/generated ?

Bzw wo definiere ich, dass dieser generates folder auch ein Source folder beim kompilieren ist.

Einerseits finde ich schwierig generate im source folder und damit auch im SCM zu haben, aber wie geht man eben java generierte Files um ?

Danke
 
B

bygones

Gast
Was du sagst ist richtig :)
Quellen gehören unter src/..., ergebnisse, zu denen auch generierter Code gehört, unter target/... zB. target/generated-sources.

Das Buildhelper Plugin hilft dir dabei: Build Helper Maven Plugin - Usage
danke fuer den link.

nur leider interesiert ihn der neue Folder nicht wirklich... ich habe sowohl
<phase>generate-sources</phase>
als auch
<phase>compile</phase>
ausprobiert.

weder konsole noch eclipse verstehen aber dass es sich um einen zusätzlichen Sourcefolder handelt ?!

danke
 
B

bygones

Gast
Was sieht denn die effective-pom aus? ([[c]mvn help:effective-pom[/c])

Ich habe den generator mechanismus in ein profile getan
Code:
<profiles>
      <profile>
          <id>idl2java</id>
              <build>
                  <plugins>
 // build-helper plugin
//  generator plugin
auf konsole starte ich dann [c]mvn clean compile -Pidl2java[/c] - was zwar den generator anwirft, aber das compilen nicht durchgehen lässt.

in der effektive pom ist jedenfalls kein zusätzlicher source folder unter build eingetragen bzw zu sehen (ausser in der definition vom build helper) - auch wenn ich das builder-helper plugin aus dem profile rausnehme ändert sich nix.

Als Hintergrund:
Es gibt mehrere projekte, die diesen Generator brauchen, aber nicht alle. Ich dachte ich könne das profile mit dem generator plugin in die parent pom aller projekte schreiben und diejenigen die es brauchen machen dann eben [c]-Pidl2java[/c] - die anderen nicht. Jedoch sollen die natürlich auch nicht den zusätzlichen src folder dann haben....

Ist das umsetzbar ?
 
M

maki

Gast
Ein Tipp: Verwende prinzipiell immer [c]mvn install[/c], ausser du weisst genau was du machst ;)

Komische Sache, sollte eigentlich funktionieren, das buildhelper plugin kommt auch vor dem generator plugin? (reihenfolge kann sehr wichtig sein)

Klar sollte das umsetzbar sein, profile bringen eine menge flexibilität rein.
 
B

bygones

Gast
ich habe es sowohl vorher als auch nach dem generator plugin probiert - bzw profile und generator plugin auskommentiert und nur
Code:
<build>
                  <plugins>    
                  <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.5</version>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-source</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>target/generated-sources</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>       
      </plugins>
      </build>
ausprobiert mit [c]mvn install[/c] - jedes mal fliegt er raus weil er klassen nicht finden konnte, die eben in dem target/generated-source liegen....
 
M

maki

Gast
Komisch... die generierten Klassen sind auch alle in target/generated-source zu finden?

Ändert sich etwas wenn du beim BUzuildhelper das Verzeichnis so angibst?
[xml]<source>${basedir}/target/generated-sources</source>
[/xml]
Wie sieht es dann in der effective-pom aus?

Änderst sich etwas, wenn du beides, das generieren & den buildhelepr ohne profil in dieselbe POM wirfst?
 
G

Guest2

Gast
Bei mir stehts so:

Code:
<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>build-helper-maven-plugin</artifactId>
                                <version>1.5</version>
				<executions>
					<execution>
						<id>add generated src directory</id>
						<phase>process-sources</phase>
						<goals>
							<goal>add-source</goal>
						</goals>
						<configuration>
							<sources>
								<source>${project.build.directory}/src/</source>
							</sources>
						</configuration>
					</execution>
				</executions>
			</plugin>

Würde also auch auf den nicht vollständigen Pfad tippen. ;)

Gruß,
Fancy
 
B

bygones

Gast
Code:
<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>D:\maven-workspace\Parent\Aggregator\Remote/target/generated-sources</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
<plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.3</version>
        <executions>
          <execution>
            <id>idl2java</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <tasks>
                <property name="idl.dir" value="D:\maven-workspace\Parent\Aggregator\Remote/src/main/resources/idl" />
                <property name="generated.dir" value="D:\maven-workspace\Parent\Aggregator\Remote/target/generated-sources" />
                <ant antfile="D:\maven-workspace\Parent\Aggregator\Remote/build.xml">
                  <target name="idl" />
                </ant>
              </tasks>
            </configuration>
          </execution>
        </executions>
      </plugin>
so schaut die effective aus.

der generator ist ein ant aufruf, der in ${basedir}/target/generated-sources schreibt. Die Files sind da...

der BHelper ist vor dem generator. Da ich unter windows arbeite entstehen die \ / Pfad probleme... aber auch auf \ umzustellen ändert nix :-(
 
M

maki

Gast
Hmm.. würde jetzt zzu wildem Trial & Error übergehen... zB. die Reihenfolge vom Buildhelper & generator plugin vertauschen...
 
B

bygones

Gast
ich habe einfach mal ein neues Projekt angelegt ohne den generator um nur den builder zu testen.

da klappt es...

also irgendwas ist bei dem projekt zerschossen...

mal nochmal langsam von vorne ;-)

danke euch vielmals

Und es klappt... keine Ahnung was bei dem anderen Projekt sich angesammelt hat....
 
Zuletzt bearbeitet von einem Moderator:
B

bygones

Gast
einzig Eclipse mag das nicht so.

eclipse weiss nicht dass nun auch in target/generated-sources src code liegt.

Einzige Möglichkeit die ich jetzt sehe ist, in Eclipse diesen Folder nochmal explizit als src folder anzugeben. Damit ist Eclipse glücklich und maven interessiert es ja nicht was man in Eclipse definiert....
 
M

maki

Gast
Rechts-klick auf Projekt Maven -> Update Project Configuration könnte helfen.

Nutzt du ein externes maven2 in Eclipse, der embedded macht bei mir auch oft Ärger ohne Grund, naja, zeigt fehler wo keine sind etc.
 
B

bygones

Gast
Rechts-klick auf Projekt Maven -> Update Project Configuration könnte helfen.

Nutzt du ein externes maven2 in Eclipse, der embedded macht bei mir auch oft Ärger ohne Grund, naja, zeigt fehler wo keine sind etc.

externes da intern maven3 genommen wird, wir aber wegen hudson maven2 erstmal nutzen wollen....

klappt mit dem "update"...
 
Zuletzt bearbeitet von einem Moderator:

Oben