No entiendo su problema. Los recursos de src/main/resources
se copian automáticamente en target/classes
y, por lo tanto, están disponibles en el classpath bajo Maven y Eclipse con relación al nivel raíz en la misma ubicación (a menos que su proyecto Eclipse no esté configurado correctamente).
Y cuando se empaqueta dentro de un JAR, el contenido de target/classes
se empaqueta "tal cual", por lo que no se cambia nada.
En otras palabras, el acceso a su file.txt
como esto está perfectamente bien (y esto es en realidad how things are documented):
// Retrieve resource
InputStream is = getClass().getResourceAsStream("/file.txt");
// Do something with the resource
...
Si usted tiene un problema en alguna parte, por favor aclarar.
Actualización: Hice una prueba rápida con el experto en Eclipse-plugin y no puedo reproducir el problema:
$ mvn archetype:generate -DgroupId=com.stackoverflow -DartifactId=q2467362 -Dversion=1.0-SNAPSHOT
...
$ cd q2467362
$ mkdir -p src/main/resources
$ mvn eclipse:eclipse
...
$ cat .classpath
<classpath>
<classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
<classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>
El directorio src/main/resources
se añade como carpeta de origen como se esperaba. ¿Puedes mostrar tu POM (especialmente el elemento resources
si defines uno)?
¿Qué se debe hacer con el proyecto eclipse para que copie los recursos a destino/clases durante el paso de compilación automático? –
@Stefan Setup 'src/main/resource' como carpeta de origen. Pero esto debe hacerse tanto con maven-eclipse-plugin como con M2Eclipse. –
Intenté regenerar el proyecto con mvn eclipse: eclipse, pero aún no lo hice. Hmm. Supongo que lo agregaré manualmente de esta manera, entonces. –