Maven资源文件,将java类文件和属性文件放在同一目录中

时间:2011-06-11 14:29:22

标签: java resources maven

我在同一目录中有java类文件和属性文件。

的src /主/ JAVA / COM /柏林/的Test.class

的src /主/ JAVA / COM /柏林/ Test.properties

使用我构建的maven jar和maven目标,我希望它们出现在同一目录中。但是,当我使用'mvn package'时,maven将类文件和属性文件放在不同的地方。

..输出: jar -tvf file.jar:

Sat Jun 11 08:24:32 EDT 2011 main / java / com / berlin / Test.properties

我想: 星期六6月11日08:24:32 EDT 2011 com / berlin / Test.properties 星期六6月11日08:24:32 EDT 2011 com / berlin / Test.class

...

我的一部分:

<build>
        <finalName>${project.artifactId}</finalName>
        <sourceDirectory>src</sourceDirectory>
        <testSourceDirectory>test</testSourceDirectory>
        <resources>
            <resource>
                <directory>src</directory>
                <includes>
                    <include>**</include>
                </includes>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
        </resources>
<plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${java.source.version}</source>
                    <target>${java.target.version}</target>
                </configuration>
            </plugin>           
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>            
        </plugins>

3 个答案:

答案 0 :(得分:11)

出于Maven的原因,你应该将属性文件放在src / main / resources中,而不是放在src / main / java目录中(保持相同的子文件夹结构)。

话虽这么说,要获得你想要的东西,你需要用src替换(在你的pom.xml中)src/main/java。未经测试,但如果您有问题请分享。

答案 1 :(得分:1)

首先,您应该将资源放入src / main / resources / com / berlin / Test.properties,并将您的java源文件放入src / main / java / com / berlin / Test.java ......永远不要将编译后的类放入src / folder ...此外你应该删除配置:

  <finalName>${project.artifactId}</finalName>
  <sourceDirectory>src</sourceDirectory>
  <testSourceDirectory>test</testSourceDirectory>
  <resources>
        <resource>
            <directory>src</directory>
            <includes>
                <include>**</include>
            </includes>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
    </resources>
从您的pom中获取,因为您不需要它,而且这是错误的(约定超过配置范例!)。看看maven中的default folder layout

Maven Way是将源文件(* .java)放入src / main / java,资源src / main / resources。编译后的单元测试类src / test / java和src / test / resources将被放入目标/类或测试目标/测试类中。

答案 2 :(得分:0)

<build>
    <testResources>
        <testResource>
            <directory>src/test/resources</directory>
        </testResource>
        <testResource>
            <directory>src/test/java</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </testResource>
    </testResources>
</build>