无法从Eclipse中的动态Web项目的Maven依赖项导入类

时间:2019-04-19 09:03:44

标签: java eclipse maven jar web-project

我通过右键单击一个动态Web项目并将其转换为Maven项目,然后选择“配置”->“转换为Maven项目”。我在pom.xml中添加了依赖项jar。

<dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>rest-assured</artifactId>
            <version>3.1.0</version>
            <scope>test</scope>
        </dependency>

然后,右键单击项目->运行方式-> maven安装。安装成功。

现在,所有的jar和类都在Maven Dependencies部分下可用。 下面是我的项目结构的屏幕截图。

Project structure

下面是Maven依赖项部分的屏幕截图。

Maven dependencies section

但是,我无法将依赖项jar中的任何包或类导入到src文件夹中的任何Java类(例如:HttpServices.java)中。尽管下载了jar,但我无法使用它们。

我尝试更新Maven项目(强制清除快照),清理项目,构建项目,但是没有任何效果。我在项目中没有错误。另外,当我将罐子直接添加到构建路径中时(使用添加外部罐子即没有Maven),它工作得很好。请帮助解决问题。

注意:其他Java Maven项目运行正常。问题仅在于此转换的Maven项目。 我正在为Web开发人员使用Eclipse Java EE IDE。版本:Photon Release(4.8.0)和jdk 8

下面是生成的pom.xml。当我将项目转换为Maven时,会自动生成编译器和war插件。我只添加了依赖项。

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>executeAutomation</groupId>
  <artifactId>executeAutomation</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.1</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>rest-assured</artifactId>
            <version>3.1.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

下面是maven的类路径条目。

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
        </attributes>
    </classpathentry>

1 个答案:

答案 0 :(得分:0)

由于 <scope>test</scope> ,这种依赖性的所有内容仅在测试源中可用,而在主源中不可用。

删除<scope>test</scope> ,右键单击该项目,然后选择 Maven>更新项目...

有关Eclipse中测试源的类路径分离的更多信息: