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