经常与Background scanning of projects
相关的人抱怨说,当NetBeans
启动时会发生这种情况。
我有一个带有Maven 3.8.2
的Spring Boot 2.6.x
项目,使用Cisco AXL Schema 12.5
。
用Apache CXF
从这个AXL Schema
生成了很多Java源代码文件。
当我在我的项目上做一个Clean and Build
之后,Background scanning of projects
立即启动。
而且最近大部分时间都花得相当长。
我看到它也扫描
netbeans-12.6/webcommon/jsstubs/corestubs.zip
为什么在构建我的项目时也要扫描这个?
但是大多数时候,虽然它显示100%扫描完成,但它花费在生成的Java源代码文件所在的文件夹中
<project folder>/target/generated/cxf
有2282个生成的Java源代码文件。
我不确定NetBeans
是否挂起或真的扫描这些文件,它显示100%扫描,所以应该这样做。
通常它需要太长的时间,所以我必须从控制台终止NetBeans
。在重新启动NetBeans
后,Background scanning for projects
启动,需要的时间要短得多,但这很烦人。
我能做些什么呢?
当我从控制台启动NetBeans
时,我只执行./netbeans
。如果用sudo ./netbeans
启动NetBeans
,有什么区别吗?
下面是我的项目文件夹/文件结构的样子,可能我没有正确使用:
首先,我提取了src
文件夹旁边的AXL Schema
<project folder>
-> schema
-> 12.5
AXLAPI.wsdl
AXLEnums.xsd
AXLSoap.xsd
-> src
-> main/...
-> test/...
在pom.xml
中我使用
...
<build>
...
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>3.4.5</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/schema/12.5/AXLAPI.wsdl</wsdl>
<wsdlLocation>classpath:schema/12.5/AXLAPI.wsdl</wsdlLocation>
<extraargs></extraargs>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
...
<resources>
...
<resource>
<directory>./</directory>
<includes>
<include>schema/**</include>
</includes>
</resource>
<resource>
<directory>target/generated/cxf</directory>
<includes>
<include>**/*.java</include>
</includes>
</resource>
...
</resources>
</build>
...
也许这个pom.xml
设置是不正确的,这就是为什么Background scanning for projects
工作错误。
当我查看生成后的war
文件时,我看到
WEB-INF
-> classes
-> com/cisco/axl/api/_12
-> schema/12.5
有些藏物可能不属于那里。
例如,在com/cisco/axl/api/_12
中,不仅有class
文件,而且有所有相关的生成的Java
源代码文件(全部2282个)。
也许schema/12.5
也不应该在war
文件中。
1条答案
按热度按时间cbwuti441#
我试了这个pom:
(最新的cxf-codegen-plugin,无其他配置,wsdl文件from here,java ee依赖项)
运行
mvn clean install
(“清理并生成项目......”使用此wsdl只需不到5秒的时间),并获得以下结果:..这张漂亮的图片(生成的源文件的分辨率!按提供商(cxf)分组...我们可以有更多)。
结论
Netbeans在“生成的源代码”方面是成熟的。(只要它们在
target/generated-sources/<provider>
中;).另一方面,对于“生成的项目”(maven/gradle,例如openapi-plugin),我 * 遇到了(netbeans)问题 *......并且不得不将“生成的东西”(/project!)外部化/“源代码控制”。
不要做的事
build>resources>resource>directory>.
这会(尝试)将您的项目根目录(额外)封装到target/classes!!(这可能会混淆 * 任何 * IDE。)...>resource>directory>target
,原因与此类似,特别是在Netbeans中。提示
src/main/resources
中。否则:外面。<resources/>
添加到<build/>
,只有当我们决定这样做/知道我们做什么/不创建“圆”(用现有的maven默认值),而不是“欺骗netbeans”!(这是过时的;)更新:
axl-demo/schema
)更新了同一个项目。(感谢发送至:How to assign more memory to Netbeans?、...)
一些调整
..尤达补充道:
(仅)使用
mvn install -Pgen
(或在netbeans中(项目〉属性〉运行〉)配置(下拉列表))激活它。我不同意“推荐的解决方案”!对于“成千上万”的类,*B/很少改变 *,谁愿意清理和重新生成他们“数百”次/天?
它使我们从(
mvn -Pgen clean install
)加速:转到“项目〉清理和构建”(
mvn clean install
):