我一直在追逐这个问题好几天了。我最近从 luna 升级到 Eclipse neon。我有多个项目依赖于同一开发空间中其他项目中定义的 jar。我仅在 pom.xml 中定义项目依赖项,一切都很好。但是,我有一个项目有 2 个依赖项目,一个项目将自身解析为 jar,另一个将自身解析为对另一个项目中生成的类的路径的引用。
这是 pom.xml 的片段,它引用了其他项目:
<dependency>
<groupId>org.ihc.hdd</groupId>
<artifactId>LeopardSearchBase</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>org.ihc.hdd.solr</groupId>
<artifactId>IndexerBase</artifactId>
<version>1.1.0</version>
</dependency>
请注意,类路径引用了“IndexerBase”项目,而 jar 引用了“LeopardSearchBase”。
这些项目被定义为罐子,据我所知,它们的配置方式完全相同。
奇怪的是,使用 Eclipse luna,运行 'maven->Update Project...' 它会正确配置自己,但是将 Eclipse neon 指向同一个项目,它会错误地配置自己。
来自 Eclipse luna 的 org.eclipse.wst.common.component 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="EddConsole-1.0">
<dependent-module archiveName="IndexerBase-1.1.0.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/IndexerBase/IndexerBase">
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module archiveName="LeopardSearchBase-1.3.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/LeopardSearchBase/LeopardSearchBase">
<dependency-type>uses</dependency-type>
</dependent-module>
<property name="context-root" value="EddConsole"/>
<wb-resource deploy-path="/" source-path="src/main/webapp"/>
<property name="java-output-path" value="/target/classes"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/webapp"/>
</wb-module>
</project-modules>
来自 Eclipse neon 的 org.eclipse.wst.common.component 看起来像这样:
<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="EddConsole-1.0">
<dependent-module archiveName="LeopardSearchBase-1.3.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/LeopardSearchBase/LeopardSearchBase">
<dependency-type>uses</dependency-type>
</dependent-module>
<property name="context-root" value="EddConsole"/>
<wb-resource deploy-path="/" source-path="src/main/webapp"/>
<property name="java-output-path" value="/target/classes"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/webapp"/>
</wb-module>
</project-modules>
我希望我在这里错过了一个配置选项。随着项目按原样运行,它将无法正确部署为 Web 应用程序。
关于如何解决这个问题的任何想法?
谢谢你。