【问题标题】:Maven resource files, put java class files and property files in same directoryMaven资源文件,将java类文件和属性文件放在同一目录下
【发布时间】:2011-09-13 01:46:04
【问题描述】:

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

src/main/java/com/berlin/Test.class

src/main/java/com/berlin/Test.properties

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

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

2011 年 6 月 11 日星期六 08:24:32 EDT main/java/com/berlin/Test.properties

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

...

我的 pom 的一部分:

<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>

【问题讨论】:

    标签: java resources maven


    【解决方案1】:

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

    话虽如此,要获得您想要的内容,您需要将(在您的 pom.xml 中)src 替换为 src/main/java。未经测试,但如果您有问题,请分享。

    【讨论】:

      【解决方案2】:

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

        <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方式是将源文件(*.java)放到src/main/java,资源src/main/resources。单元测试类 src/test/java 和 src/test/resources 编译后会被放入 target/classes 或者用于测试的 target/test-classes。

      【讨论】:

        【解决方案3】:
        <build>
            <testResources>
                <testResource>
                    <directory>src/test/resources</directory>
                </testResource>
                <testResource>
                    <directory>src/test/java</directory>
                    <excludes>
                        <exclude>**/*.java</exclude>
                    </excludes>
                </testResource>
            </testResources>
        </build>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-23
          • 1970-01-01
          • 2013-07-30
          • 2015-08-13
          • 2013-12-19
          • 2020-04-26
          相关资源
          最近更新 更多