Netbeans не перезагружает класс при «Применить изменения кода» в проекте maven с удаленной отладкой jpda - PullRequest
1 голос
/ 09 марта 2012

Итак, у меня есть проект maven, который производит пакет jar, содержащий некоторые задачи ant.

Когда я запускаю свой скрипт сборки Ant в другом месте с открытой jpda и отлаживаю задачи, скажем MyTask с NetBeans, кнопка 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 использует пакет jar, созданный проектом Maven, или по другим причинам?

Примечание: у меня есть несколько пользовательских конфигураций, например, куда выводить скомпилированные классы и где поместить пакет jar. Может ли это быть причиной?


Обновление 2:

ОК. Я сам нашел причину.

Это потому, что я добавил следующую строку под <build> в pom.xml:

<directory>${my.custom.work.dir}/build</directory>

Поэтому maven будет выводить скомпилированные файлы классов в этот каталог, а не по умолчанию ${basedir}/target. Однако Netbeans кажется слишком глупым, чтобы это признать - он просто пытается использовать каталог по умолчанию.

Теперь вопрос может быть намного проще: есть ли способ заставить IDE распознать это, добавив конфигурацию в pom?

1 Ответ

2 голосов
/ 15 марта 2012

В [your_home_path]/.netbeans/7.0/maven/conf вы найдете файл setting.xml. Здесь вы можете установить ${my.custom.work.dir} в <profiles> тег Вы можете найти примеры здесь (в разделе Свойства )

Редактировать:

Это работает для меня с этим видом 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>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...