将范围更改为运行时后,依赖关系消失

时间:2012-10-10 10:43:23

标签: java maven dependencies

我需要在运行时范围中使用一些jar依赖项,但是在pom.xml中更改它之后,这个依赖项从依赖项列表中消失了。在编译和运行期间使用来自此依赖项的类,因此我需要此依赖项在运行时范围内。

3 个答案:

答案 0 :(得分:3)

如果在编译中使用依赖的类,则需要“编译”范围。运行时依赖项不在编译类路径中。

答案 1 :(得分:2)

如果在编译时需要来自依赖项的类,则应使用compile范围,这是默认范围。

为了运行您的应用程序,您需要所有依赖的jar都在类路径上。您可以通过各种方式使用Maven来实现这一目标,但正确的范围仍为compile

答案 2 :(得分:2)

您可能想了解Maven Dependency scopes。默认范围是compile,除非绝对必须,否则不应更改。

  
      
  • 编译 - 这是默认范围,如果未指定,则使用此范围。编译依赖项在所有类路径中都可用。

  •   
  • 运行时 - 此范围表示编译不需要依赖项,但是用于执行。它位于运行时和测试类路径中,但不是编译类路径。

  •   

在项目中运行某个类的最简单方法是使用exec-maven-plugin

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>java</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <mainClass>com.example.Main</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

现在您可以像这样运行项目:

mvn package exec:java

这很容易,您不必考虑类路径设置。