修订后的问题(下面的旧问题):
问题:使用 Maven 在 NetBeans 中构建和运行 Jenkins 插件项目时,log4j 使用的Java 类加载器找不到某些文件(如配置文件、自定义附加程序、JDBC 驱动程序)。需要将它们复制到 下的另一个位置target
,然后才能找到它们。
我想我想要的解决方案是:我想给 Maven 一个额外的命令行参数,在 NetBeans 中配置。这应该使 Maven 在构建之后和运行任何东西之前做额外的步骤。该步骤可以是文件复制(在 pom.xml 中或由命令参数指定),也可以是运行脚本(在 pom.xml 中或由命令行参数指定)。
向 pom.xml 添加什么?一些maven插件?
老问题(供参考)
我有一个“my-jenkins-plugin”的maven项目。我需要与它一起使用log4j。我目前在这个路径上有log4j.xml :
./src/main/resources/log4j.xml
当我在 Netbeans 中进行 clean&build 时,它会被复制到这些地方:
./target/classes/log4j.xml
./target/generated-classes/emma/classes/log4j.xml
./target/my-jenkins-plugin/WEB-INF/classes/log4j.xml
但是,log4j 无法从任何这些位置找到该文件。我需要手动将其复制到此位置:
./target/work/webapp/WEB-INF/classes/log4j.xml
然后它按预期工作。
更多细节:Maven 2、Netbeans 7.2。它是标准的 Jenkins 插件,最初是使用 创建的项目mvn hpi:create
,Netbeans 使用 Jetty 来运行 Jenkins。在 NetBeans 下运行时使用的类路径是java.class.path=C:\work\maven\boot\classworlds-1.1.jar
(这是一个现有的 jar),我还没有找到向该类路径添加任何内容的方法,但是如果我将log4j.xml添加到该 jar 文件的根目录,它也可以找到并且可以工作(显然这不是一个令人满意的解决方案)。通过查看控制台输出,我知道 log4j 是否有效,要么是正确的日志行,要么是可怕的log4j:WARN No appenders could be found for logger (TestLog). log4j:WARN Please initialize the log4j system properly.
错误,仅此而已。
问题:我怎么能有
- 在第一组位置中找到的log4j.xml ,
- 或在目标目录之外的位置找到log4j.xml ,例如C:\log4j\log4j.xml
- 或制作 maven 和/或 netbeans 将log4j.xml复制到现在可以找到的位置
- 或任何其他好方法让我在使用 NB 调试时自动清理和构建后提供我的插件log4j.xml ?