1

在 maven pom 文件中,我的项目打包类型是“jar”,如下所示。

<packaging>jar</packaging>

我在 pom.xml 文件中的 cargo-maven2-plugin 配置来自遗留代码。我尝试运行它 Eclipse Kepler,但由于插件配置没有提到 cargo-maven2-plugin 版本(我不知道这个配置的实际版本),Eclipse 尝试获取最新的 1.4.8。根据配置,Tomcat 版本看起来是 6.0.14,但是容器 id 是 5x。整个配置似乎不对,我试着让它工作。有什么建议么?包类型必须是 jar,我不能更改它。

                <plugin>
                    <groupId>org.codehaus.cargo</groupId>
                    <artifactId>cargo-maven2-plugin</artifactId>
                    <configuration>
                        <wait>${cargo.wait}</wait>
                        <container>
                            <containerId>tomcat5x</containerId>
                            <zipUrlInstaller>
                                <url>
                                    http://archive.apache.org/dist/tomcat/tomcat-6/v${tomcat.version}/bin/apache-tomcat-${tomcat.version}.zip
                                </url>
                                <installDir>${installDir}</installDir>
                            </zipUrlInstaller>
                        </container>
                        <configuration>
                            <home>${project.build.directory}/tomcat5x/container</home>
                            <properties>
                                <cargo.hostname>${cargo.host}</cargo.hostname>
                                <cargo.servlet.port>${cargo.port}</cargo.servlet.port>
                            </properties>
                            <deployables>
                                <deployable>
                                    <properties>
                                        <context>ROOT</context>
                                    </properties>
                                </deployable>
                            </deployables>
                        </configuration>
                    </configuration>
                    <executions>
                        <execution>
                            <id>start-container</id>
                            <phase>pre-integration-test</phase>
                            <goals>
                                <goal>start</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>stop-container</id>
                            <phase>post-integration-test</phase>
                            <goals>
                                <goal>stop</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>  

            </plugins>
        </build>
    </profile>
</profiles>
<properties>
    <cargo.host>localhost</cargo.host>
    <cargo.port>25888</cargo.port>
    <cargo.wait>false</cargo.wait>
    <tomcat.version>6.0.14</tomcat.version>
</properties>

我将类型设置为“jar”以匹配项目。但是当我在 Eclipse Kelper 中运行 maven build 时,我收到以下错误消息。如您所见,没有列出允许的类型“jar”。有人可以帮忙吗?

org.codehaus.cargo.container.ContainerException: Cannot create deployable. There's no registered deployable for the parameters (container [id = [default]], deployable type [jar]). Valid types for this deployable are: 
  - ear
  - war
  - rar
  - bundle
  - file
  - sar
  - ejb
4

1 回答 1

0

根据Cargo 的 Tomcat 5.x 文档,只有战争文件可以部署到 tomcat,这就是它失败的原因。为什么不用war来创建webapp?我不知道您的要求,但通常如果您在 Tomcat 上部署,您的 war 文件中有一个 webapp。你需要做什么?您的项目中有 servlet 或 jsp 文件吗?您是否需要将其用作其他 web 应用程序的库?

您可以创建一个 Web 应用程序并将该项目生成的 jar 作为依赖项包含在内。使用 org.apache.marmotta:marmotta-archetype-webapp Maven 原型创建您的项目并将您的旧项目依赖项添加到 pom,它会是这样的:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>test.war</groupId>
  <artifactId>test-war</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>test-war Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>test-war</finalName>
  </build>
  <dependencies>
      <dependency>
          <groupId>legacyProjectGroupId</groupId>
          <artifactId>legacyProjectArtifactId</artifactId>
          <version>legacyProjectVersion</version>
      </dependency>
  </dependencies>
</project>
于 2014-05-14T02:23:43.257 回答