Foremost: I have removed the <sourcePaths/> block I showed above, now. It
works perfectly without it, so it was always unnecessary.

No, we are not placing *any* generatedBase files under version control (GAS
always overwrites them, so adding them is pointless), and we are only
placing *customized* generated files under version control. All of the
gyrations in place are specifically to help prevent developers from *
accidentally* adding generated files to version control. In specific,
FlexMojos wants to generate non-Base classes, by default, into the normal
build source directory (src/main/flex for us). This causes us substantial
grief, because we end up with, intermixed, (non-base) files which are
customized (read: ones that should be under version control, because we've
made changes that we need to keep) and those which are vanilla (and should
not be added to version control), in the same directory. The end result is
that our developers receive a list of over 500 "added" files which the
version control integration for their IDE wants to add to Subversion which
they have to filter through. This always ends the same: Generated files that
shouldn't be committed, are.

I understand that FlexMojos can place baseGenerated and generated files in
configurable locations--I'm using that feature. The antrun configuration
allows me a very useful separation. *Customized* generated files are stored
in src/main/flex, and are under version control. These files are then copied
(by antrun) to a *separate* folder (under target/), where FlexMojos can
generate files with them (generatedBase files are stored in another
directory under target/). This way, the massive list of generated files is
not intermixed with files we want under version control. If we didn't have
any customized files, we wouldn't need this step. But GAS supports modifying
the non-Base files for a reason, and it's functionality we need for our
system.

Also, while I hear what you're saying about <sourcePath/>, the simple fact
is this: FlexMojos is currently not sufficiently configurable for me to *not
* use it, in some places. I've gone through, on your recommendation, and
removed it everywhere I can and have our build still work. If it will be
removed in 3.8 and does not exist in 4.x, unfortunately we will be staying
on 3.7.1 until either <sourcePath/> is supported in a newer version or
FlexMojos has the configuration settings we require added to enable us to
build successfully without having to use it.

The primary issue is:
..src/main
....assets/
....flex/
....fonts/
....resources/
....styles/
  Without <sourcePaths/>, FlexMojos offers me *no *way to include these
extra paths in the build. It has, as you've pointed out before, custom code
that makes the assets/ resolution work, but it does not find the fonts or
styles unless we use <sourcePaths/>
  - Please understand, I am not in a position to change this layout--it is
what it is. So my choices are: Use ant or Use FlexMojos with <sourcePath/>,
until FlexMojos gives me another choice
  - If you're open to it, I'd be happy to work on and submit a patch that
adds, for example, <fontsPath/> and <stylesPath/> configuration elements to
allow me to define these directories in a way that does not require me to
manipulate <sourcePaths/>

Thanks for your help, and I apologize for the long e-mails--I know you're
busy and doing this on your own time (and I appreciate it).

Bryan

On Wed, Sep 1, 2010 at 8:12 AM, Marvin Froeder <[email protected]> wrote:

> 1st, I didn't read you entire e-mail, just don't have the time right now,
> but lemme inject some (potentially wrong) thoughts.
>
> Not, sure why you are doing this antrun thing, but flexmojos is able to
> place baseGenerated and generated wherever you want to.  Are you putting the
> baseFiles under SCM? is that it?!
>
> Flexmojos should deal with sourcePath, if it does not, that is a bug, BTW,
> sourcePath will be removed from 3.8, so better start reporting problems
> instead of doing something that is know as a bad idea.
>
> Again, "I didn't read you entire e-mail, just don't have the time right
> now, but lemme inject some (potentially wrong) thoughts."
>
> VELO
>
> On Wed, Sep 1, 2010 at 10:45 AM, Bryan Turner <[email protected]>wrote:
>
>> 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]<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]<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