范围"提供"在maven中给出安装错误

pet*_*ust 2 maven

我正在尝试从sourceforge(jtmt.sf.net)安装Maven发行版,它提供了一个POM.Hoewever

mvn install
Run Code Online (Sandbox Code Playgroud)

抛出错误:

[ERROR]     'build.plugins.plugin[org.mortbay.jetty:maven-jetty6-plugin].depende
ncies.dependency.scope' for org.apache.geronimo.specs:geronimo-j2ee_1.4_spec:jar
 must be one of [compile, runtime, system] but is 'provided'. @ line 653, column
 20
Run Code Online (Sandbox Code Playgroud)

pom包含代码:

      <!-- For web development with Jetty6 -->
  <plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty6-plugin</artifactId>
    <configuration>
      <scanIntervalSeconds>10</scanIntervalSeconds>
      <connectors>
        <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
          <port>8081</port>
          <maxIdleTime>60000</maxIdleTime>
        </connector>
      </connectors>
    </configuration>
    <dependencies>
      <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-j2ee_1.4_spec</artifactId>
        <version>1.0</version>
        <scope>provided</scope>
      </dependency>
    </dependencies>
  </plugin>
Run Code Online (Sandbox Code Playgroud)

我假设POM过去工作过,虽然现在项目有点休眠.

安装时是否应该设置一些开关?(我使用的是mvn 3.0.3).发布商已经检查了大量的库lib/.

Jak*_*ski 9

该项目可能与Maven 2合作.Maven 3对插件中的作用域更加挑剔,并且provided插件依赖项中不再允许使用作用域.你可以试试:

  • 完全删除依赖并重建(范围provided意味着某些东西应该已经使它可用)
  • 只删除<scope>标记(使其成为一个简单的compile依赖项)
  • 如果没有任何帮助,你可以尝试用Maven 2构建它

provided现在插件中不允许的原因是,provided它实际上是在运行时由环境(例如app服务器)提供的依赖项.Jetty是一个特例 - 它是一个经常用作插件的应用服务器.