2

非標準構成の Maven プロジェクトがあります。

$> tree                                                                                          
.
├── pom.xml
├── symbolic-link-to-sources -> ../src
└── target
    ├── maven-archiver
    │   └── pom.properties
    ├── project-1.0-SNAPSHOT-sources.jar
    ├── project-1.0-SNAPSHOT.jar
    └── surefire

ソースが../srcにあるこのmavenモジュールのソースjarを生成しようとしています。プラグインがパスで親フォルダーを受け入れない場合に備えて、../src へのシンボリック リンクを作成しました。そのために、次のように構成された Maven ソース プラグインを使用します。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-source-plugin</artifactId>
  <version>2.2.1</version>
  <configuration>
    <includePom>true</includePom>
    <includes>
      <include>symbolic-link-to-sources/**</include>
    </includes>
  </configuration>
</plugin>

でこのプラグインを実行しますmvn source:jar。残念ながら、ソース jar には pom.xml しかありません。includePom を false に設定すると、プラグインはソース アーカイブを作成しません。

私は多くのことを試しました<include>: ../src, ../src/**, ../**, symbolic-link-to-sources,どれもソースをソースjarに入れませんsymbolic-link-to-sources/**それに関するドキュメントには、相対的なファイルセットパターンと書かれて../**/*.javaいますが。

../src フォルダーの Java ファイルのコンテンツをソース jar に取得する方法はありますか?

(はい、私のシンボリック リンクは壊れていません。標準のフォルダー階層を持つようにモジュールを再配置する方法はありません。これは、ant ベースのプロジェクトのラッパー プロジェクトです)。

4

2 に答える 2

0

プロパティを使用して、ソース フォルダー<includesに含めるファイル/パターンを指定します。

<sourceDirectory>ソース (シンボリック リンクなど) の正しい場所に設定しましたか? もしそうなら、上記のプラグイン構成全体を省略しmvn source:jarて、pom で実行することはできますか? ソースを正しく生成する必要があります。

于 2013-02-28T08:15:59.733 に答える
0

同じ問題で立ち往生し、グーグルで試してみた後、最終的にこれにたどり着きました:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>add-source</goal>
      </goals>
      <configuration>
        <sources>
          <source>../common/src/main/java</source>
        </sources>
      </configuration>
    </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-source-plugin</artifactId>
  <executions>
    <execution>
      <id>attach-sources</id>
      <goals>
        <goal>jar</goal>
      </goals>
    </execution>
  </executions>
</plugin>

「../common/src/main/java」は、現在のプロジェクトでシンボリック リンクとしてリンクされているソースへのパスです。

build-helper-maven-plugin には packageフェーズがあることに注意してください。フェーズ生成ソースを使用すると、同じソースがシンボリックリンクディレクトリとbuild-helper-maven-pluginで構成されたディレクトリから追加されたため、「重複クラス」を取得していました。

于 2019-04-26T12:09:24.887 に答える