java - DTD 显示在 Eclipse 中的项目目标路径中,但通过 Maven 命令行使用时不显示

标签 java eclipse maven-2 dtd

我不确定最好的标题是什么,所以如果有人有更好的建议,请离开。

我不确定应该提供哪些信息,所以我会告诉您发生了什么。

我有一些单元测试在 Eclipse 中顺利通过。在这些测试中,有一些 XML 正在针对自定义构建的 DTD(如果有人熟悉的话,稍作修改的 Apelon DTS DTSConcept)进行验证。在 Eclipse 中,当我运行这些测试时,我可以在项目的目标路径中看到 dtds 显示出来。

因此,dir1/dir2/dtds/myDtd.dtd 存在于项目的目标路径中。

但是,如果我使用 maven 在命令行上运行单元测试(mvn clean test),这些测试会因 MalformedURLException 而失败。我能够摆脱 DTD 验证并且测试通过,所以我知道这与此有关。经过许多尝试后,无论出于何种原因,我查看了项目的目标路径。现在,dir1/dir2/dtds/myDtd.dtd 不存在。这似乎就是我收到异常的原因——该文件不存在。

我意识到这可能太模糊了,但是您是否可以想到为什么我在 Eclipse 中运行与使用 Maven 命令行相比会得到这些不同的结果?

我将根据要求提供更多信息,但我不确定到底要包含哪些内容。

感谢您的帮助。

编辑:好吧,问题似乎是 Maven 在构建时根本没有将 DTD 复制到目标目录。我可能会为此谷歌/问一个单独的问题,但我如何确保 Maven 正确复制这些文件?

最佳答案

考虑到该文件是DTD(而不是Java资源),我认为最好将其放在默认maven项目的resources/META-INF文件夹中。

默认情况下,maven 在进程资源阶段会将资源下的所有文件复制到目标目的地,因此您可以摆脱额外的插件配置。

还需要修改您的 XML 文件以指向新位置。

典型的 Maven 项目结构如下:

my-app
|-- pom.xml
`-- src
    |-- main
    |   |-- java
    |   |   `-- com
    |   |       `-- mycompany
    |   |           `-- app
    |   |               `-- App.java
    |   `-- resources
    |       `-- META-INF
    |           `-- application.properties
    [            -- myDtd.dtd
    `-- test
        `-- java
            `-- com
                `-- mycompany
                    `-- app
                        `-- AppTest.java

关于java - DTD 显示在 Eclipse 中的项目目标路径中,但通过 Maven 命令行使用时不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3232076/

相关文章:

java - eclipse 中的代码格式化警告

java - 为什么很多 Maven 依赖版本都以 SNAPSHOT 结尾?

java - Maven 离线 - mvn-plugins 的问题

java - 在运行时更改类文件

java - 将 BigDecimal 转换为 scale = 2 的相反数

java - 即使在运行配置中指定,Eclipse 也无法找到 adb

java - ClassNotFoundException : org. springframework.context.support.ClassPathXmlApplicationContext

java - 使用 @ManyToOne 和 @OneToMany 会导致 org.hibernate.exception.GenericJDBCException

java - ActiveMQ的InactivityMonitor会看到哪些数据来检查连接可用性?

java - Sonarlink 插件未安装在 Eclipse 中