You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@maven.apache.org by cemerick <ce...@snowtide.com> on 2009/12/09 22:52:39 UTC

Generate + include list of resources included in jar

I have a project that has a number of resources under src/main/resources. 
The associated codebase needs to know what resources are available in order
to load them at runtime (new resources are added all the time, so the list
cannot be static).  I've got an ant target (from an older project) that
scans the resources dir, and emits a list of the files under that directory
as a new file.  The code can then always load that directly listing at
runtime, and do what it needs to.

This works fine, but I'm wondering if there's a native maven solution to the
problem.  I see noticed a ${project.resources} property mentioned elsewhere;
I figured I'd drop that into the jar's manifest, and load it back at runtime
from there, but project.resources appears to be an ArrayList, so can't be
added as a manifest entry's value (or, at least, not in a way obvious to
me).

Thoughts?

Thanks,

- Chas
-- 
View this message in context: http://old.nabble.com/Generate-%2B-include-list-of-resources-included-in-jar-tp26718010p26718010.html
Sent from the Maven - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Generate + include list of resources included in jar

Posted by Wayne Fay <wa...@gmail.com>.
> Better options welcome.

Write a plugin. Its super simple and will give you exactly what you
need. I'd just knock something out in Groovy if I were you.

Wayne

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org


Re: Generate + include list of resources included in jar

Posted by cemerick <ce...@snowtide.com>.
Just to give further details, here's what I've worked out as a (mostly)
general solution to this issue:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <phase>compile</phase>
            <configuration>
                <tasks>
                    <property name="rsrc.dir"
value="${project.resources[0].directory}"/>
                    <property name="excludes"
value="${project.resources[0].excludes}"/>
                    <property name="rsrc.list.out"
value="${project.build.directory}/classes/${project.groupId}:${project.artifactId}:resourcelist.txt"/>
                    
                    <fileset id="resources.list" dir="${rsrc.dir}"
excludes="${excludes}"/>
                    <pathconvert pathsep="${line.separator}"
property="resources.str" refid="resources.list">
                        <filtermapper>
                            <replacestring from="${rsrc.dir}" to=""/>
                        </filtermapper>
                    </pathconvert>
                    <echo file="${rsrc.list.out}" append="false"
message="${resources.str}"/>
                    <echo>Including resources found in ${rsrc.dir} in list
written to ${rsrc.list.out}</echo>
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

The failings here being (a) it won't include resources in supplemental
resource directories in the outputted list (b) it writes files to
target/classes instead of a proper generated-sources directory
(<http://jira.codehaus.org/browse/MANTRUN-54> would make that possible, I
believe), and (c) it's ant ;-)

Better options welcome.

- Chas


cemerick wrote:
> 
> I have a project that has a number of resources under src/main/resources. 
> The associated codebase needs to know what resources are available in
> order to load them at runtime (new resources are added all the time, so
> the list cannot be static).  I've got an ant target (from an older
> project) that scans the resources dir, and emits a list of the files under
> that directory as a new file.  The code can then always load that directly
> listing at runtime, and do what it needs to.
> 
> This works fine, but I'm wondering if there's a native maven solution to
> the problem.  I see noticed a ${project.resources} property mentioned
> elsewhere; I figured I'd drop that into the jar's manifest, and load it
> back at runtime from there, but project.resources appears to be an
> ArrayList, so can't be added as a manifest entry's value (or, at least,
> not in a way obvious to me).
> 
> Thoughts?
> 
> Thanks,
> 
> - Chas
> 

-- 
View this message in context: http://old.nabble.com/Generate-%2B-include-list-of-resources-included-in-jar-tp26718010p26729085.html
Sent from the Maven - Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@maven.apache.org
For additional commands, e-mail: users-help@maven.apache.org