当我跑步时
mvn clean install
对于我的maven模块然后它编译好了。没有问题。 但是当我在IntelliJ中打开我的pom.xml文件时,我选择了Build - >构建模块然后我得到以下问题:
Information:javac 1.8.0_144 was used to compile java sources
Information:Module "mymodule" was fully rebuilt due to project configuration/dependencies changes
Information:09.10.2017 21:16 - Compilation completed with 3 errors and 3 warnings in 23s 991ms
C:\somepath\mymodule\pom.xml
Error:Error:osgi: [mymodule] Exception: java.lang.ClassNotFoundException: org.apache.sling.bnd.models.ModelsScannerPlugin not found, parent: java.net.URLClassLoader@29453f44 urls:[] exception:java.lang.ClassNotFoundException: org.apache.sling.bnd.models.ModelsScannerPlugin
Error:Error:osgi: [mymodule] Failed to load plugin org.apache.sling.bnd.models.ModelsScannerPlugin;generatePackagesHeader=true, error: java.lang.ClassNotFoundException: org.apache.sling.bnd.models.ModelsScannerPlugin not found, parent: java.net.URLClassLoader@29453f44 urls:[] exception:java.lang.ClassNotFoundException: org.apache.sling.bnd.models.ModelsScannerPlugin
Error:Error:osgi: [mymodule] Cannot load the plugin org.apache.sling.bnd.models.ModelsScannerPlugin
这是一个带有AEM代码的模块,它使用maven-sling-plugin。它适用于项目中的其他开发人员。因为它直接从maven执行时工作我试图理解IntelliJ在后台做什么。但实际上,我的问题是那些编译问题。
据我所知,当Build完成后,IntelliJ不会调用maven。任何想法如何找到从IntelliJ运行和直接从Maven运行的区别?
答案 0 :(得分:0)
请检查您的核心pom文件。它应该包含这样的插件部分:
<plugin> <!-- Enable registration of Sling Models classes via bnd plugin --> org.apache.sling.bnd.models.ModelsScannerPlugin, <!-- Allow the processing of SCR annotations via a bnd plugin --> org.apache.felix.scrplugin.bnd.SCRDescriptorBndPlugin;destdir=${project.build.outputDirectory} </plugin>
但是,如果您使用aem原型创建了一个项目,则标签看起来像是'<_plugin>
答案 1 :(得分:-1)
这里发生的是,使用当前的ClassLoader无法找到ModelScanner插件。原因可能是您使用的是 IntelliJ IDEA Ultimate ,该软件带有一个预安装的名为
因此,只需在IntelliJ中停用此Osmorc插件,即可使您的构建从项目POM.xml文件中maven-bundle-plugin的配置中提到的ModelScannerPlugin恢复到类加载器,这应该可以解决该问题。
如果仍然导致类似的Maven构建错误,请确保将Maven依赖项“ org.apache.sling.bnd.model”添加到POM.xml文件中的maven-bundle-plugin。
<!-- Apache Felix Bundle Plugin -->
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>3.3.0</version>
<inherited>true</inherited>
<extensions>true</extensions>
<executions>
<!-- Configure extra execution of 'manifest' in process-classes phase to make sure SCR metadata is generated before unit test runs -->
<execution>
<id>scr-metadata</id>
<goals>
<goal>manifest</goal>
</goals>
<configuration>
<supportIncrementalBuild>true</supportIncrementalBuild>
</configuration>
</execution>
</executions>
<configuration>
<exportScr>true</exportScr>
<instructions>
<!-- Enable processing of OSGI DS component annotations -->
<_dsannotations>*</_dsannotations>
<!-- Enable processing of OSGI metatype annotations -->
<_metatypeannotations>*</_metatypeannotations>
<_plugin>org.apache.sling.bnd.models.ModelsScannerPlugin;generatePackagesHeader=true</_plugin>
</instructions>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.bnd.models</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</plugin>