当使用远程jpda调试在maven项目中“应用代码更改”时,Netbeans不会重新加载任何类

时间:2012-03-09 10:03:53

标签: maven netbeans

所以我有一个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中添加配置来识别?

1 个答案:

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