We are successfully using the generate goal in our project with several
other modules, and it works as part of the full build. However, ours is
configured quite differently from what I've seen other places.

To help prevent developers from checking in generated code, our flex-model
module places generated sources under target rather than src/main/flex. We
have a maven-antrun-plugin configuration which copies the contents of
src/main/flex to target/src/as3 before flexmojos:generate runs. This allows
us to version, under src/main/flex, any generated file that we have
customized (non-base, since those are always regenerated), but keeps all of
the generated sources in a directory which is ignored for version control.

Our configuration looks like this. First, we have properties for all of the
directories in play:
    <properties>

 
<generatedBaseSourceDirectory>${project.build.directory}/src/base</generatedBaseSourceDirectory>

 
<generatedSourceDirectory>${project.build.directory}/src/as3</generatedSourceDirectory>
        <versionedSourceDirectory>src/main/flex</versionedSourceDirectory>
    </properties>

Next, the <build/> element has sourceDirectory and testSourceDirectory
defined:
        <sourceDirectory>${generatedSourceDirectory}</sourceDirectory>
        <testSourceDirectory>src/test/flex</testSourceDirectory>

Followed by our plugins. maven-antrun-plugin comes first, since it needs to
copy the files we've modified:
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.3</version>
                <executions>
                    <execution>
                        <id>copy-sources</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <copy overwrite="true"
todir="${generatedSourceDirectory}">
                                    <fileset
dir="${versionedSourceDirectory}"/>
                                </copy>
                            </tasks>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
As you can see, this copies any files/directories from the
versionedSourceDirectory (src/main/flex) to the generatedSourceDirectory
(target/src/as3).

That is followed by configuration for the flexmojos-maven-plugin:
            <plugin>
                <groupId>org.sonatype.flexmojos</groupId>
                <artifactId>flexmojos-maven-plugin</artifactId>
                <version>${flex.mojos.version}</version>
                <extensions>true</extensions>

                <configuration>
                    <sourcePaths>
                        <path>${generatedSourceDirectory}</path>
                        <path>${generatedBaseSourceDirectory}</path>
                    </sourcePaths>
                    <storepass/>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>

 <baseOutputDirectory>${generatedBaseSourceDirectory}</baseOutputDirectory>
                            <extraOptions>

 <as3typefactory>com.company.granite.EnhancedAs3TypeFactory</as3typefactory>

 <transformer>com.company.granite.EnhancedGroovyTransformer</transformer>
                            </extraOptions>
                            <generatorToUse>graniteds21</generatorToUse>
                            <includeJavaClasses>
                                <javaClass/>
                            </includeJavaClasses>

 <outputDirectory>${generatedSourceDirectory}</outputDirectory>
                            <templates>

 <base-bean-template>${project.basedir}/gsp/beanBase.gsp</base-bean-template>

 
<base-entity-template>${project.basedir}/gsp/entityBase.gsp</base-entity-template>

 
<base-remote-template>${project.basedir}/gsp/remoteBase.gsp</base-remote-template>

 <bean-template>${project.basedir}/gsp/bean.gsp</bean-template>

 <entity-template>${project.basedir}/gsp/entity.gsp</entity-template>

 <interface-template>${project.basedir}/gsp/interface.gsp</interface-template>

 <remote-template>${project.basedir}/gsp/remote.gsp</remote-template>
                            </templates>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
So, several things I'll point out here. First, we're not using ${basedir}
anywhere; we use ${project.basedir}, which seems to create the correct
paths. Also, notice that the <sourcePaths/> is configured at the
*plugin* level,
not the *execution* level (Velo: I know this is not the preferred approach,
so I'm very interested if you have any suggestions on how we could not use
<sourcePaths/> here but still be able to use this layout). We're using
(highly) customized GSPs (remote-template, in 3.x, can only be set in
<templates/>, so we're setting them all that way), AS3 type factory and
Groovy transformer.

This layout is a bit more work, in the poms, but the developers on the team
really like it. It makes it very simple for them to differentiate between
what should be added to Subversion and what should not. If they customize a
generated file, they copy it to src/main/flex. This layout works correctly
for Maven, FlexBuilder 3, FlashBuilder 4 and IntelliJ 8.1 and 9.

I hope this has some snippets that might help you figure out what's amiss.

Bryan

On Wed, Sep 1, 2010 at 12:51 AM, btyla <[email protected]> wrote:

> The goal itself works okay when executed from within the project
> itself but it doesn't seem to work when the project is part of an
> aggregate build.
> I'm happy to supply any information needed to further investigate this
> issue, just let me know.
>
> On Aug 31, 5:15 pm, Marvin Froeder <[email protected]> wrote:
> > What is wrong with the generate goal?
> >
> >
> >
> > On Tue, Aug 31, 2010 at 11:43 AM, btyla <[email protected]> wrote:
> > > Besides the basedir maven bug, there seems to be something wrong with
> > > the generate goal in 3.8-SNAPSHOT. I also tried to add the generated-
> > > source dir with the maven helper plugin but that didn't work either.
> > > At this point I unfortunately have to disable the code generation.
> > > Should I file a jira issue?
> >
> > > On Aug 31, 4:15 pm, Marvin Froeder <[email protected]> wrote:
> > > > Well, maven is the one that interpolates the ${basedir}... so I would
> say
> > > it
> > > > is a maven bug, but weird that only you got this problem....  anyway,
> DO
> > > NO
> > > > TAMPER WITH SOURCE PATHS!  I really mean it.
> >
> > > > This is the best way to break everything.
> >
> > > > VELO
> >
> > > > On Tue, Aug 31, 2010 at 11:05 AM, btyla <[email protected]> wrote:
> > > > > Hi
> >
> > > > > I'm generating AS3 classes from their java counterparts. Running
> maven
> > > > > in this project directory works, but when running maven in the
> parent
> > > > > project directory this fails. The generated 'base' cannot be found
> by
> > > > > the compiler. It seems that the generated-sources directory is not
> > > > > added automatically in this case.
> >
> > > > > I tried the 'includeSources' configuration element but without
> luck;
> > > > > it is ignored and doesn't show in the compiler options.
> >
> > > > > The 'sourcePaths' doesn't work either because it some how inserts a
> > > > > 'null' path element.
> >
> > > > > <sourcePaths>
> > > > >    <path>${baseDir}/src/main/flex</path>
> > > > > </sourcePaths>
> >
> > > > > results in:
> >
> > > > > -compiler.source-path
> X:\bnu-op\bnu-op-flex-application\null\src\main
> > > > > \flex
> >
> > > > > I'm using flexmojos-3.8-SNAPSHOT
> >
> > > > > X:\bnu-op>mvn -version
> > > > > Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200)
> > > > > Java version: 1.6.0_21
> > > > > Java home: C:\Program Files\Java\jdk1.6.0_21\jre
> > > > > Default locale: en_US, platform encoding: Cp1252
> > > > > OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"
> >
> > > > > Regards,
> > > > > Bjorn
> >
> > > > > --
> > > > > You received this message because you are subscribed to the Google
> > > > > Groups "Flex Mojos" group.
> > > > > To post to this group, send email to [email protected]
> > > > > To unsubscribe from this group, send email to
> > > > > [email protected]<flex-mojos%[email protected]>
> <flex-mojos%2bunsubscr...@googlegrou­ps.com>
> > > <flex-mojos%[email protected]<flex-mojos%[email protected]>
> <flex-mojos%252bunsubscr...@googl­egroups.com>
> >
> > > > > For more options, visit this group at
> > > > >http://groups.google.com/group/flex-mojos
> >
> > > > >http://flexmojos.sonatype.org/
> >
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Flex Mojos" group.
> > > To post to this group, send email to [email protected]
> > > To unsubscribe from this group, send email to
> > > [email protected]<flex-mojos%[email protected]>
> <flex-mojos%2bunsubscr...@googlegrou­ps.com>
> > > For more options, visit this group at
> > >http://groups.google.com/group/flex-mojos
> >
> > >http://flexmojos.sonatype.org/- Hide quoted text -
> >
> > - Show quoted text -
>
> --
> You received this message because you are subscribed to the Google
> Groups "Flex Mojos" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]<flex-mojos%[email protected]>
> For more options, visit this group at
> http://groups.google.com/group/flex-mojos
>
> http://flexmojos.sonatype.org/
>

-- 
You received this message because you are subscribed to the Google
Groups "Flex Mojos" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/flex-mojos

http://flexmojos.sonatype.org/

Reply via email to