How to add 'main/src/.../messages.properties' file to ShrinkWrap WebArchive?

5k views Asked by At

I have the following files in a project:

com/example/module/Messages.java
com/example/module/messages.properties

Using ShrinkWrap.create(WebArchive.class, "test.war").addPackages(true, "com.example.module") only adds Messages.java to the generated archive. How can I add messages.properties?

Thanks.

Edit.

I am using addAsResource now but it only works for files that are under test/resources folder. How can I make it work with files under main/src? Is there any maven configuration for that?

The goal is to not duplicate files. Right now I have one file under main/src and a duplicate under test\resources.

3

There are 3 answers

1
rubenlop88 On BEST ANSWER

I finally added this configuration to my POM:

<build>
  <testResources>
    <testResource>
      <directory>${basedir}/src/main/java/</directory>
      <includes>
        <include>**/*.properties</include>
      </includes>
      <excludes>
        <exclude>**/*.java</exclude>
      </excludes>
    </testResource>
    <testResource>
      <directory>${basedir}/src/test/resources/</directory>
    </testResource>
  </testResources>
</build>

Then I added the properties file with:

.addAsResource("com/example/module/messages.properties")

Now Maven copies my messages.properties to the directory target/test-classes. Therefore ShrinkWrap will find it in the classpath.

4
John Ament On
0
Jarek Przygódzki On

The trick in this case is to add resource as a File:

addAsResource(new File("src/main/foobar.properties"), "foobar.properties")).

Otherwise it must exist in the classpath - see org.jboss.shrinkwrap.impl.base.container.ContainerBase.fileFromResource(String resourceName).