2013-06-28 158 views
12

我想創建一個使用apache maven的包。當我運行mvn clean install命令它給下面的錯誤:dependencies.dependency.version'缺少錯誤

dependencies.dependency.version' is missing for javax.servlet:servlet-api.jar

我已經把那servlet的api.jar文件'我的項目的資源文件夾內

可以在任何人告訴我應該在哪裏地方, jar文件?

UPDATE: 這裏是我的pom.xml

<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"> 

<parent> 
    <artifactId>felix-parent</artifactId> 
    <groupId>org.apache.felix</groupId> 
    <version>2.1</version> 
    <relativePath>../pom/pom.xml</relativePath> 
</parent> 

<modelVersion>4.0.0</modelVersion> 

<artifactId>maven-bundle-plugin</artifactId> 
<version>2.4.1-SNAPSHOT</version> 
<packaging>maven-plugin</packaging> 

<name>Maven Bundle Plugin</name> 
<description> 
    Provides a maven plugin that supports creating an OSGi bundle 
    from the contents of the compilation classpath along with its 
    resources and dependencies. Plus a zillion other features. 
    The plugin uses the Bnd tool (http://www.aqute.biz/Code/Bnd) 
</description> 

<scm> 
    <connection>scm:svn:http://svn.apache.org/repos/asf/felix/trunk/bundleplugin</connection> 
    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/felix/trunk/bundleplugin</developerConnection> 
    <url>http://svn.apache.org/repos/asf/felix/trunk/bundleplugin</url> 
</scm> 

<build> 
    <plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
    <source>1.5</source> 
    <target>1.5</target> 
    </configuration> 
    </plugin> 
    </plugins> 
</build> 

<dependencies> 
     <!-- Provided APIs --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
     </dependency> 

    </dependencies> 

<reporting> 
    <plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-plugin-plugin</artifactId> 
    <version>3.2</version> 
    </plugin> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-changes-plugin</artifactId> 
    <version>2.9</version> 
    <configuration> 
    <component>12311143</component> 
    <versionPrefix>maven-bundle-plugin-</versionPrefix> 
    <statusIds>Resolved,Closed</statusIds> 
    <maxEntries>1000</maxEntries> 
    <issueManagementSystems> 
     <issueManagementSystem>JIRA</issueManagementSystem> 
    </issueManagementSystems> 
    <useJql>true</useJql> 
    </configuration> 
    </plugin> 
    </plugins> 
</reporting> 

</project> 

感謝 安德森

+1

請向我們展示您的pom.xml。你顯然錯過了'''servlet-api'的''。 – LaurentG

+0

請找到我的pom.xml – user2532663

回答

13

您還沒有在dependency中添加version標記。

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>1.0.0</version> //Add the version. 
</dependency> 
1

的信息是很清楚的:你的POM的dependencies元素中,你有製造品javax.servlet:servlet-api.jar一個dependency元素。並且在這個dependency元素中,必須有一個版本元素,但是您沒有提供它。

<dependencies> 
    <!-- Provided APIs --> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 

     <!-- missing version here: --> 
     <version>3.0</version> 
    </dependency> 
</dependencies> 

請注意,3.0只是一個例子。提供正確的版本。

+0

謝謝..實際上,我在我的POM中有超過20個依賴關係。我知道groupid,artifactId但我完全不知道版本。有什麼辦法可以加入? – user2532663

+1

任何方式來包括什麼?你真的應該知道你想使用哪個版本的servlet API。沒人可以爲你猜。 –

+0

我發現所有的版本但有兩個版本,一個是 com.day.cq CQ-公共 \t \t \t 5.5.0 我知道上面的版本是正確的。但是maven找不到它。但它提供了另一種方式將它導入爲 mvn deploy:deploy-file -DgroupId = com.day.cq -DartifactId = cq-commons -Dversion = 5.5.0 -Dpackaging = jar -Dfile =/path/to/file - Durl = [url] -DrepositoryId = [id] 它是什麼url,/ path/to/file,id? 請指導我 – user2532663

2

我有一個稍微不同的原因相同的錯誤。

我的項目使用依賴管理(由於某些原因,有2個<dependencyManagement>節),並且有許多模塊和子模塊。

頂級 POM有:

<dependencyManagement> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-core_2.10</artifactId> 
      <version>${spark.version}</version> 
     </dependency> 
    </dependencyManagement> 

子平 POM有

<dependencyManagement> 
     <dependency> 
      <groupId>org.apache.spark</groupId> 
      <artifactId>spark-core_2.10</artifactId> 
      <scope>provided</scope> 
     </dependency> 
    </dependencyManagement> 

葉POM

<dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-core_2.10</artifactId> 
    </dependency> 

到FI X是我刪除從中間級POM的<dependencyManagement>部分,改變了葉POM

<dependency> 
     <groupId>org.apache.spark</groupId> 
     <artifactId>spark-core_2.10</artifactId> 
     <scope>provided</scope> 
    </dependency> 
0

在我來說,我有一個單一的POM,並面臨着同樣的問題。從Harry的回答中得知,我添加了我的依賴管理部分,問題解決了。

+0

這不提供一個問題的答案,應該是一個評論。請參閱[我應該何時評論?](https://stackoverflow.com/help/privileges/comment)。 一旦你有足夠的[聲望](https://stackoverflow.com/help/whats-reputation),你將可以在任何帖子上[評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 – Dwhitz