所以我有一个maven项目,它生成一个包含一些ant任务的jar包。
当我在其他地方运行我的ant构建脚本并打开jpda,并调试任务时,使用NetBeans说MyTask,Apple Code Changes按钮不起作用。这是netbeans控制台的输出:
cd /trunks/tasks; JAVA_HOME=/opt/jdk /opt/netbeans-7.0/java/maven/bin/mvn -Djpda.stopclass=com.abc.ant.MyTask compile
Scanning for projects...
------------------------------------------------------------------------
Building tasks 1.0-SNAPSHOT
------------------------------------------------------------------------
[resources:resources]
Using 'UTF-8' encoding to copy filtered resources.
Copying 1 resource to com/abc/ant
[compiler:compile]
Compiling 1 source file to /trunks/tasks/build/classes
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 1.548s
Finished at: Fri Mar 09 17:45:24 CST 2012
Final Memory: 11M/149M
------------------------------------------------------------------------
NetBeans: classes to reload: []
NetBeans: No class to reload
所以Netbeans成功告诉Maven需要编译哪个类。但是,NetBeans不会重新加载已编译的类。是因为我的ant进程正在使用Maven项目生成的jar包,还是因为其他原因?
注意:我有一些自定义配置,比如输出编译类的位置,以及放置jar包的位置。这可能是个原因吗?
更新2:
好我自己找到了原因。
这是因为我在pom.xml中的<build>
下添加了以下行:
<directory>${my.custom.work.dir}/build</directory>
因此maven会将已编译的类文件输出到此目录,而不是默认的${basedir}/target
。但是,Netbeans似乎太愚蠢而无法识别 - 它只是尝试默认目录。
现在问题可能更容易了:有没有办法让IDE通过在pom中添加配置来识别?
答案 0 :(得分:2)
在[your_home_path]/.netbeans/7.0/maven/conf
中,您会找到setting.xml
个文件。
您可以在${my.custom.work.dir}
标记中设置<profiles>
您可以找到示例here(在属性部分中)
修改:
对于我这种POM(在Netbeans 7.0.1中)它是有用的:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
<directory>${my.custom.work.dir}/build</directory>
</build>
<properties>
<my.custom.work.dir>/home/alain/Bureau</my.custom.work.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>