首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Maven打包资源文件和类的最佳实践

用Maven打包资源文件和类的最佳实践
EN

Stack Overflow用户
提问于 2014-05-07 10:48:10
回答 1查看 1.8K关注 0票数 3

目前,我有一个包含以下build部分的示例maven项目,其中我指定了第二个资源位置目录:

代码语言:javascript
运行
复制
<project>
...
<build>
    <resources>
        <resource>
            <directory>src/main/second-resources</directory>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${maven.compiler.source}</source>
                <target>${maven.compiler.target}</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <finalName>${artifactId}</finalName>
                <outputDirectory>${jarBuildPath}</outputDirectory>
            </configuration>
        </plugin>
    </plugins>
</build>
</project>

我可以用这个配置打包我的jar,使我的类和资源文件处于正确的位置,并且没有问题。

但是当将属性<classesDirectory>添加到我的maven-jar-plugin配置片段时,配置片段的值为src/main/java。

代码语言:javascript
运行
复制
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>2.4</version>
    <configuration>
      <classesDirectory>src/main/java</classesDirectory>
      <finalName>${artifactId}</finalName>
      <outputDirectory>${jarBuildPath}</outputDirectory>
    </configuration>
 </plugin>

然后,当打包我的档案,地狱,我的资源文件不再在那里

classesDirectory属性的maven正式文档中,它说目录包含了应该打包到JAR.中的类和资源文件,这对我来说很有意义,而且我的资源文件消失也是非常公平的,因为maven假设没有任何文件有权被打包,除非它是在src/main/java下。

但是我的主要想法是,当指定我的资源文件位置时(使用下面的选项之一),即使我指定了<classesDirectory>条目,Maven也会知道文件的位置。

带有顶级<resources>条目

代码语言:javascript
运行
复制
<resources>
  <resource>
  <directory>src/main/second-resources</directory>
  </resource>
</resources>

或者通过maven资源插件

代码语言:javascript
运行
复制
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-resources-plugin</artifactId>
  <version>2.6</version>
    <configuration>
      <resources>
        <resource>
          <directory>src/main/second-resources</directory>
        </resource>
      </resources>
    </configuration>
  </plugin>

我可以告诉您,我对maven相当熟悉,但是这个问题对我来说似乎很奇怪:当您有一个自定义资源目录时,不建议在maven-jar插件中使用吗?

有谁能对这件事放点光吗?

BR.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-07 11:24:52

classesDirectory是

  • 编译器插件存储已编译的java类。
  • 资源插件复制由jar插件创建的文件中包含的资源。

您已经将其更改为jar-plugin配置中的java源代码目录。

因此,我设想您的jar现在只包含java源文件。

这是您想要的吗?还是您只是试图包含第二个资源文件源?

如果是后者,那么只需添加:

代码语言:javascript
运行
复制
<resources>
  <resource>
      <directory>src/main/resources</directory>
  </resource>
  <resource>
      <directory>src/main/second-resources</directory>
  </resource>
</resources>

应该完成您想要的,而不添加任何配置到jar插件。注意第一个..。如果在默认的src/main/resources位置仍有所需的东西,则需要使用该节。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23515701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档