首页 文章

Maven提供了部署在Juno Tomcat 7上的范围

提问于
浏览
3

那么也许不是Maven问题 . m2e / wtp问题,也许吧?

为了给出背景知识,我在Eclipse中设置了一个ICEFaces项目并将其部署在Tomcat 7.0.30中 . 在部署到Tomcat时,似乎忽略了servlet-api.jar的Maven POM配置 . 我错过了什么吗?如何让Maven做得对?

在项目中, javax.servlet-api.jar 作为ICEFaces的传递依赖而被拉入 . 由于Tomcat附带了自己的servlet-api.jar,因此我将其标记为排除并添加了显式依赖项(范围:提供) .

信息:启动Servlet引擎:Apache Tomcat / 7.0.30 06-Mar-2013 10:44:05 org.apache.catalina.loader.WebappClassLoader validateJarFile INFO:validateJarFile(D:\ workspaces \ test-project \ .metadata \ . plugins \ org.eclipse.wst.server.core \ tmp0 \ wtpwebapps \ test-project \ WEB-INF \ lib \ javax.servlet-api-3.0.1.jar) - jar未加载 . 请参阅Servlet规范2.3,第9.7.2节 . 违规类:javax / servlet / Servlet.class 06-Mar-2013 10:44:07 com.sun.faces.config.ConfigureListener contextInitialized

Maven POM

<dependency>
  <groupId>org.icefaces</groupId>
  <artifactId>icefaces-ace</artifactId>
  <version>3.2.0</version>
  <exclusions>
    <exclusion>
      <artifactId>javax.servlet-api</artifactId>
      <groupId>javax.servlet</groupId>
    </exclusion>
  </exclusions>
</dependency>

And added a dependency with provided scope

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.0.1</version>
  <scope>provided</scope>
</dependency>

Build :

  • Eclipse Juno
  • Maven webapp项目已创建 .
    *启用并配置了JSF和ICEFaces方面 .
    *配置Eclipse项目的Deployment Assembly以部署Maven依赖项 .
    *从Eclipse部署项目到Tomcat(右键单击服务器选项卡>添加/删除>添加项目> Publsh)

*** Update 1 ***

mvn dependency:tree -Dverbose

不知道如何处理这些警告 . 我将查看如何启用调试日志记录 .

[INFO] Scanning for projects...  
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building test-project Maven Webapp 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ test-project ---
[WARNING] The POM for org.codehaus.plexus:plexus-utils:jar:1.0.4 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details  
[WARNING] The POM for classworlds:classworlds:jar:1.1-alpha-2 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[WARNING] The POM for org.apache.maven:maven-plugin-api:jar:2.0 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[WARNING] The POM for org.apache.maven:maven-model:jar:2.0 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[WARNING] The POM for org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-8 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[WARNING] The POM for org.apache.maven:maven-settings:jar:2.0 is invalid, transitive dependencies (if any) will not be available, enable debug logging for more details
[INFO] com.mochapenguin:test-project:war:0.0.1-SNAPSHOT
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] +- org.icefaces:icefaces-ace:jar:3.2.0:compile
[INFO] |  \- org.icefaces:icefaces:jar:3.2.0:compile
[INFO] |     +- org.glassfish:javax.faces:jar:2.1.6:compile
[INFO] |     +- javax.portlet:portlet-api:jar:2.0:compile
[INFO] |     +- org.icepush:icepush:jar:3.2.0:compile
[INFO] |     |  \- javax.mail:mail:jar:1.4.1:compile
[INFO] |     |     \- javax.activation:activation:jar:1.1:compile
[INFO] |     \- com.sun.xml.fastinfoset:FastInfoset:jar:1.2.12:compile
[INFO] +- org.icefaces:icefaces-compat:jar:3.2.0:compile
[INFO] |  +- (org.icefaces:icefaces:jar:3.2.0:compile - omitted for duplicate)
[INFO] |  +- commons-beanutils:commons-beanutils:jar:1.8.0:compile
[INFO] |  +- commons-logging:commons-logging:jar:1.1:compile
[INFO] |  \- javax.servlet:jstl:jar:1.2:compile
[INFO] \- javax.servlet:javax.servlet-api:jar:3.0.1:provided
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.440s
[INFO] Finished at: Wed Mar 06 13:24:47 GMT 2013
[INFO] Final Memory: 6M/120M
[INFO] ------------------------------------------------------------------------

*** Update 2 ***

我在Juno中安装了以下版本:

m2e - Maven Integration for Eclipse 1.3.0.**20130129-0926** org.eclipse.m2e.feature.feature.group   Eclipse.org - m2e

在@eis指向的帖子的答案中添加了链接检查了更新 . Eclipse显示可用的次要更新( 1.3.1.20130219-1424 ) . 但更新失败,出现以下错误:

An error occurred while collecting items to be installed
session context was:(profile=epp.package.jee, phase=org.eclipse.equinox.internal.p2.engine.phases.Collect, operand=, action=).
No repository found containing: osgi.bundle,com.ning.async-http-client,1.6.5.20130219-0923
No repository found containing: osgi.bundle,org.eclipse.m2e.archetype.common,1.3.1.20130219-0923
No repository found containing: osgi.bundle,org.eclipse.m2e.core,1.3.1.20130219-1424
No repository found containing: osgi.bundle,org.eclipse.m2e.core.ui,1.3.1.20130219-1424
No repository found containing: osgi.bundle,org.eclipse.m2e.discovery,1.3.1.20130219-1424
No repository found containing: osgi.bundle,org.eclipse.m2e.editor,1.3.1.20130219-1424
No repository found containing: osgi.bundle,org.eclipse.m2e.editor.xml,1.3.1.20130219-1424
No repository found containing: osgi.bundle,org.eclipse.m2e.jdt,1.3.1.20130219-1424
No repository found containing: osgi.bundle,org.eclipse.m2e.launching,1.3.1.20130219-1424
No repository found containing: osgi.bundle,org.eclipse.m2e.lifecyclemapping.defaults,1.3.1.20130219-1424
No repository found containing: osgi.bundle,org.eclipse.m2e.maven.indexer,1.3.1.20130219-0923
No repository found containing: osgi.bundle,org.eclipse.m2e.maven.runtime,1.3.1.20130219-0923
No repository found containing: osgi.bundle,org.eclipse.m2e.model.edit,1.3.1.20130219-1424
No repository found containing: osgi.bundle,org.eclipse.m2e.refactoring,1.3.1.20130219-1424
No repository found containing: osgi.bundle,org.eclipse.m2e.scm,1.3.1.20130219-1424
No repository found containing: osgi.bundle,org.jboss.netty,3.2.5.Final-20130219-0923
No repository found containing: org.eclipse.update.feature,org.eclipse.m2e.feature,1.3.1.20130219-1424

所以,我卸载了现有的m2e并重新安装了它 . 这很有效 . 还包括在内

m2e - slf4j over logback logging (Optional) 1.3.1.20130219-1424 org.eclipse.m2e.logback.feature.feature.group   Eclipse.org - m2e

但问题仍然存在 . Juno仍在部署javax.servlet-api3.0.1.jar :(


解决了

(免责声明:这是我的理解 . 很高兴得到纠正)

它似乎m2e m2e额外(不确定它们是否仍然是单独的实体,或者只是m2e)已经安装了Juno . 我必须安装m2e - wtp connector才能正常工作 . Maven范围现在很荣幸 .

安装m2e-wtp连接器:在Juno中 - 窗口>首选项> Maven>发现>打开目录>选中m2e-wtp连接器的复选框以进行安装 . 这会将以下内容添加到已安装的软件中

m2e-wtp - Maven Integration for WTP (Incubation)    0.17.0.20130212-1821    org.eclipse.m2e.wtp.feature.feature.group   Eclipse.org - m2e-wtp

3 回答

  • 0

    对我来说,这不是Maven问题 . Maven得到了servlet-api,但是你没有通过maven部署或构建一个包,你只是用maven编译(也许通过m2e编译)并通过Eclipse进行部署 . m2e / eclipse应该处理这个问题,但事实并非如此 .

    根据这个similar thread,安装m2e m2e-extras应该修复它 . 另请参阅其他答案以获取有关Eclipse行为的更多详细信息 .

  • 0

    你的 <artifactId/> 在这两个地方都是错的 .

    • 标签排序约定(当然未严格执行)是在以下排序中定义工件' and exclusions'标签 groupIdartifactIdversiontypeclassifierscope . 你的是 artifactIdgroupId . 我建议你纠正这个并遵循惯例以便于阅读 .

    • 更改您的排除,如下所示:

    <dependency>
        <groupId>org.icefaces</groupId>
        <artifactId>icefaces-ace</artifactId>
        <version>3.2.0</version>
        <exclusions>
            <exclusion>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
    • 将您的依赖项更改为:
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>
    
  • 0

    我正在使用Eclipse Juno并安装“m2e - wtp”插件也解决了我的问题 .

相关问题