web-dev-qa-db-ja.com

Maven:フォルダーまたはjarファイルを現在のクラスパスに追加する

クラスをコンパイルするためにmaven-compileプラグインを使用しています。次に、現在のクラスパスに1つのjarファイルを追加したいと思います。そのファイルは別の場所にとどまります(c:/jars/abc.jarとしましょう。ここにこのファイルを残しておきます)。どうやってやるの?

引数でクラスパスを使用する場合:

<configuration>
 <compilerArguments>
  <classpath>c:/jars/abc.jar</classpath>
 </compilerArguments>
</configuration>

現在のクラスパス(すべての依存関係を含む)をオーバーライドするため、機能しません。

私を助けてください。

17
David

これは以前に尋ねられた可能性があります。 jarをインストールせずにMaven 2ビルドクラスパスに追加できますか? を参照してください。

簡単に言うと、jarをシステムスコープの依存関係として含めます。これには、jarへの絶対パスを指定する必要があります。

http://maven.Apache.org/guides/introduction/introduction-to-dependency-mechanism.html も参照してください

8
michid

docs および example から、クラスパス操作が許可されていないことは明らかではありません。

<configuration>
 <compilerArgs>
  <arg>classpath=${basedir}/lib/bad.jar</arg>
 </compilerArgs>
</configuration>

ただし、 Java docshttps://www.cis.upenn.edu/~bcpierce/courses/629/jdkdocs/tooldocs/solaris/javac.html )を参照してください

-classpath path javacの実行に必要なクラス、またはコンパイル中の他のクラスから参照されているクラスを検索するためにjavacが使用するパスを指定します。デフォルトまたはCLASSPATH環境変数が設定されている場合、それをオーバーライドします。

現在のクラスパスを取得して拡張することは可能かもしれませんが、
mavenでは、使用されているクラスパスをどのように出力しますか? を参照してください

    <properties>
      <cpfile>cp.txt</cpfile>
    </properties>

  <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.9</version>
    <executions>
      <execution>
        <id>build-classpath</id>
        <phase>generate-sources</phase>
        <goals>
          <goal>build-classpath</goal>
        </goals>
        <configuration>
          <outputFile>${cpfile}</outputFile>
        </configuration>
      </execution>
    </executions>
  </plugin>

ファイルを読み込む( ファイルをMavenプロパティに読み込む

<plugin>
  <groupId>org.codehaus.gmaven</groupId>
  <artifactId>gmaven-plugin</artifactId>
  <version>1.4</version>
  <executions>
    <execution>
      <phase>generate-resources</phase>
      <goals>
        <goal>execute</goal>
      </goals>
      <configuration>
        <source>
          def file = new File(project.properties.cpfile)
          project.properties.cp = file.getText()
        </source>
      </configuration>
    </execution>
  </executions>
</plugin>

そして最後に

  <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.6.1</version>
    <configuration>
      <compilerArgs>
         <arg>classpath=${cp}:${basedir}/lib/bad.jar</arg>
      </compilerArgs>
    </configuration>
   </plugin>
2
Paul Verest