Chr*_*wes 9 eclipse maven-2 eclipse-wtp
我使用eclipse:eclipse
目标来生成Eclipse Project环境.部署工作正常.该目标为所有需要的依赖项创建var类路径条目.
有了m2eclipse
Maven容器,它定义了一个WEB-INF/lib
适合我的导出文件夹.但我不想依赖,m2eclipse
所以我不再使用它了.
eclipse:eclipse
目标生成的类路径条目没有这样的导出文件夹.
在使用WTP引导servlet容器时,它会将除库之外的所有资源和类发布到上下文中.
什么是缺少发布所需的库,或者如果没有m2eclipse集成则不可能?
环境
maven-eclipse-plugin配置
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.8</version>
<configuration>
<projectNameTemplate>someproject-[artifactId]</projectNameTemplate>
<useProjectReferences>false</useProjectReferences>
<downloadSources>false</downloadSources>
<downloadJavadocs>false</downloadJavadocs>
<wtpmanifest>true</wtpmanifest>
<wtpversion>2.0</wtpversion>
<wtpapplicationxml>true</wtpapplicationxml>
<wtpContextName>someproject-[artifactId]</wtpContextName>
<additionalProjectFacets>
<jst.web>2.3</jst.web>
</additionalProjectFacets>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
生成的文件
执行eclipse:eclipse
目标后,依赖模块未在我生成的列表中列出.settings/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="someproject-core">
<wb-resource deploy-path="/" source-path="src/main/java"/>
<wb-resource deploy-path="/" source-path="src/main/webapp"/>
<wb-resource deploy-path="/" source-path="src/main/resources"/>
</wb-module>
</project-modules>
Run Code Online (Sandbox Code Playgroud)
即将推出的读者更新
这里的问题是偏离packaging
型,如果你使用maven-eclipse-plugin
请验证使用<packaging>war</packaging>
或ear
.
以下问题标志着我在一个maven pom中有两个构建生命周期的情况.
发布所需的库缺少什么,或者如果没有 m2eclipse 集成就不可能实现?
我不确定是否理解这个问题。我已经使用maven-eclipse-plugin
maven webapps 很长一段时间并取得了成功。那么,在服务器上部署是否有效呢?该应用程序是否可用?你能澄清一下吗?
为了以防万一,我用你的插件配置对一个新创建的 web 应用程序进行了快速测试,看起来没问题。我刚刚删除了jst.java
侧面并配置了maven-compiler-plugin
:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<target>1.5</target>
<source>1.5</source>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我添加了对log4j
. 然后,当我运行时mvn eclipse:eclipse
,这就是我在生成的结果中得到的.settings/org.eclipse.wst.common.component
:
<project-modules id="moduleCoreId" project-version="2.0">
<wb-module deploy-name="example-mvn-Q2713648">
<property name="context-root" value="example-mvn-[artifactId]"/>
<wb-resource deploy-path="/" source-path="src/main/webapp"/>
<property name="java-output-path" value="/target/classes"/>
<dependent-module archiveName="log4j-1.2.14.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar">
<dependency-type>uses</dependency-type>
</dependent-module>
<wb-resource deploy-path="/WEB-INF/classes" source-path="src/main/resources"/>
</wb-module>
</project-modules>
Run Code Online (Sandbox Code Playgroud)
依赖项log4j
已存在并已发布。我错过了什么?
更新:我将提供的 pom 粘贴到我的war
项目中,将其更改为使用 2.8 版本的 eclipse 插件,并src/main/webapp
从resources
元素中删除(它不是资源),这是我运行时得到的结果mvn eclipse:eclipse
:
<project-modules id="moduleCoreId" project-version="2.0">
<wb-module deploy-name="example-mvn-Q2713648">
<property name="context-root" value="example-mvn-[artifactId]"/>
<wb-resource deploy-path="/" source-path="src/main/webapp"/>
<property name="java-output-path" value="/target/classes"/>
<dependent-module archiveName="hsqldb-1.8.0.10.jar" deploy-path="/WEB-INF/lib" handle="module:/classpath/var/M2_REPO/hsqldb/hsqldb/1.8.0.10/hsqldb-1.8.0.10.jar">
<dependency-type>uses</dependency-type>
</dependent-module>
<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-module>
</project-modules>
Run Code Online (Sandbox Code Playgroud)
对我来说看起来不错。
更新 2:正如我在对您自己的答案的评论中所写的那样,我认为 eclipse 插件不会为具有类型打包的项目生成动态 Web 模块jar
。如果您更改包装war
,它应该按预期运行。我很确定这就是你遇到麻烦的原因。
归档时间: |
|
查看次数: |
11590 次 |
最近记录: |