ランタイム スコープで jar 依存関係を使用する必要がありますが、pom.xml で変更した後、この依存関係は依存関係リストから消えました。この依存関係のクラスはコンパイルおよび実行中に使用されるため、この依存関係をランタイム スコープにする必要があります。
3 に答える
コンパイルで依存関係からクラスを使用する場合は、「コンパイル」スコープが必要です。ランタイムの依存関係がコンパイル クラスパスにありません。
コンパイル中に依存関係のクラスが必要な場合compile
は、デフォルトのスコープを使用する必要があります。
アプリケーションを実行するには、すべての依存jarがクラスパス上にある必要があります。これを実現するためにさまざまな方法でMavenを使用できますが、正しいスコープはまだcompile
です。
Mavenの依存関係スコープについて読みたいと思うかもしれません。デフォルトのスコープはです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
これは簡単で、クラスパスの設定について考える必要はありません。