Ok its figured out.  Had to write my own MavenFileFilter and use plexus to wire 
it in.

The only question I now have is how to set the role-hint for our custom 
MavenFileFilter in a pom file?  To have our custom MavenFileFilter be wired in 
I stole the role-hint "default".  But I would like to use my own role-hint 
because there is another "default" implementation and I do not want it to use 
that one.  I do not know if it is by chance that our implementation is being 
used.

For the MavenResourcesFiltering I was able to set the role-hint the 
mavenFilteringHints tag.  I guess what I am asking for is the equivalent tag 
for setting the MavenFileFilter implementation?

thanks 

jose


On Wednesday, August 20, 2014 10:02 AM, Jose Martinez <[email protected]> wrote:
 


Cool, thanks Robert.

So now that I have the plugin functioning and my MavenResourcesFiltering's 
filterResources(mre) method being called, what can I do with the 
MavenResourcesExecution to access the ${propertyNames} in my resources and set 
their values?

I pulled the List<Resource> from the MavenResourcesExecution, but I can't 
figure out how to get the ${propertyNames} from my resources or set their 
values?
 
thanks
jose


On Tuesday, August 19, 2014 4:21 PM, Robert Scholte <[email protected]> 
wrote:
 


Done, see MRESOURCES-182[1]
Will be updated with the next release.

thanks,
Robert

[1] https://jira.codehaus.org/browse/MRESOURCES-182

Op Tue, 19 Aug 2014 21:43:44 +0200 schreef Jose Martinez  
<[email protected]>:

> Problem resolved.  The documentation in this link has the dependency  
> tags in the wrong place... 
> http://maven.apache.org/plugins/maven-resources-plugin/examples/custom-resource-filters.html#Dependency_declaration
>  When I moved the plugin's dependencies tag outside of the configuration  
> tags then everything worked.  Who ever manages that link please  
> investigate.  Everything else on the site was spot on.
>  thanks
> jose
>
>
> On Tuesday, August 19, 2014 2:46 PM, Jose Martinez <[email protected]>  
> wrote:
>
>
> Hello,
>
> I've
 made some progress on this and have a problem with Maven finding my  
> custom plugin's class.
>
> =============
> [ERROR] Failed to execute goal  
> org.apache.maven.plugins:maven-resources-plugin:2.6:resources  
> (default-resources) on project roc: java.util.NoSuchElementException  
> [ERROR] role: org.apache.maven.shared.filtering.MavenResourcesFiltering  
> [ERROR] roleHint: ResourceFilter [ERROR] -> [Help 1]
> =============
>
> I created a class that implements MavenResourcesFiltering, and added the  
> plexus javadoc comments as instructed. =============
> /**
>  *
>  * @author jmartinez
>  *
>  * @plexus.component  
> role="org.apache.maven.shared.filtering.MavenResourcesFiltering" 
>  *                   role-hint="ResourceFilter"
>  */
> public class ResourceFilter implements MavenResourcesFiltering {
> ==================
>
> I also added to the main project's POM the maven-resources-plugin
 with  
> the dependency and maven filtering hints.  The problem I am having is  
> that Maven cannot find my MavenResourcesFiltering class.  Its suppose to  
> be able to find it using the role-hint.
> =============
>         <pluginManagement>
>             <plugins>
>                 <plugin>
>                     <groupId>org.apache.maven.plugins</groupId>
>                    
 <artifactId>maven-resources-plugin</artifactId>
>                     <version>2.6</version>
>                     <configuration>
>                         <dependencies>
>                             <dependency>
>                                 <groupId>com.xxxx</groupId>
>                           
       
> <artifactId>xxxx-rfp-maven-plugin</artifactId>
>                                 <version>0.2</version>
>                             </dependency>
>                         </dependencies>
>                         <mavenFilteringHints>
>                              
>
 <mavenFilteringHint>ResourceFilter</mavenFilteringHint>
>                         </mavenFilteringHints>
>                     </configuration>
>                 </plugin>
>
> =============
>
> I suspect the problem is that my plugin's jar is not being loaded to the  
> maven-resources-plugin classpath.  I suspect this because my jar was not  
> being downloaded until I added it to the pom's dependencies list, versus  
> it being downloaded when it was just in the maven-resources-plugin  
> dependency list.
>
> Am I missing something here?
>
> thanks
> jose
>
>
> On Monday, August 18, 2014 3:08 PM, Jose Martinez  
> <[email protected]> wrote:
>
>
> Karl,
>
> Thank you for responding.  Yes I can go into more detail.  
> Lets go back to my example of the mysql DB credentials.  Lets say I have  
> five environments.  So that means I have 3 variables times 5  
> environments and that comes out to 15
>  various values.  From what I understand about the  
> maven-resources-plugin that would mean I would have to do one of the  
> following:
> 1)  Stick those 15 values in the pom and then maybe use 5 different  
> profiles, one for each env.  This can get quite cumbersome and our  
> deployment scripts
 would have to call mvn with the correct profile.
>
> 2)   Use system variables.  Have some code called at some point before  
> the maven build that would know which environment it is in and retrieve  
> all the values for each known property and make system variables out of  
> them.  From what I understand this might still require I have them in  
> the POM; I'm not sure if maven-resources-plugin would automatically  
> replace each ${propertyName} with the proertyName system variable  
> without having to have the propertyName in the POM?
>
>
 3) Is there another way that I am missing that this can be done using  
> maven-resources-plugin?  I can see that it is very powerful tool, as  
> everything in Maven has proven to me to be so I'm probably missing  
> another approach.
>
> A few things to consider that I would like to have...
> 1) Centralized view into all our properties that can be queried and have  
> tools built on top of (e.g. a maven resource filter).
>
> 2) Minimal entries of propertyName.  Essentially the ${propertyName}  
> should only be entered into the property file and after
 that just the  
> entries that go into the central data store.  The pom is left alone.
>
> 3) Environments can be easily added and removed and altered by only  
> touching the centralized datastore.
>
> I guess those three
>  things have one thing in common, benefits of having our properties in a  
> centralized datastore.  At my current employer they built just such a  
> system that works off of web services (managed global properties on a  
> per environment basis).  It is not in production yet so from my point of  
> view I will interface out the Dao and just swap implementations when its  
> ready... using a simple relational DB at first.
> thanks
> jose
>
>
> On Monday, August 18, 2014 2:06 PM, Karl Heinz Marbaise  
> <[email protected]> wrote:
>
>
>
> Hi Jose,
>
>
> can you elaborate a little bit more why you are
 not using the
>  default
> filtering capabilities of maven-resources-plugin etc. ?
>
> Can you explain what exactly you like to achieve?
>
>
>
>> Hello,
>>
>> We have projects with many property and xml files that need resource  
>> filtering per environment.
>>
>> For example in a property file one might see ${mysqlDbHost},  
>> ${mysqlDbPw}, and ${mysqlDbUser}.  There would also be a system  
>> variable called ENVIRONMENT.  Based on the ${propertyName} and  
>> ENVIRONMENT value, the resource filter would replace with the correct  
>> value.  This can be done with a DB (SELECT value FROM properties WHERE  
>> env="env" and name="propertyName") or via a web service  
>> (getPropertyValue?env=env&name=propertyName).
>>
>> On the Maven side the solution seem to be to create a custom  
>> MavenResourcesFiltering.  The custom MavenResourcesFiltering  
>> implementation would do the lookups I mentioned above for each  
>> ${propertyName} encountered in the resource files.
>>
>> 1)  Is my assessment that creating a custom MavenResourcesFiltering is  
>> the way to go?  Maybe this problem is already solved already, since it  
>> does not seem unique?
>>
>> 2)  I have visited multiple Maven articles on this but still have no  
>> idea how to implement it, the sites I visited are listed below.  Does  
>> anyone know of any document or can provide feedback on how to implement  
>> a custom MavenResourcesFiltering?
>>
>> It seems to me that at some point I would need a method that has either  
>> gets a list of all the ${propertyName}'s found in a
>  file and the ability to provide the value for that property name.  
> Following the links I found I cannot tell where that method should be  
> implemented and how to get it called from MyMojo.execute().
>>
>> 1:  http://maven.apache.org/shared/maven-filtering/
>> 2:  http://maven.apache.org/shared/maven-filtering/usage.html
>> 3:  
>> http://maven.apache.org/guides/plugin/guide-java-plugin-development.html
>>
>> Thank you!
>> jose
>>
>
> Kind regards
> Karl-Heinz Marbaise
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to