mavenがコンパイルしてビルドjarに含めるための追加のソースディレクトリを追加するにはどうすればよいですか?


95

src / main / javaに加えて、ビルドプロセスに含めたいsrc / bootstrapディレクトリを追加します。つまり、Mavenでコンパイルしてビルドにソースを含めます。どうやって!?


簡単な質問:なぜソースコードをsrc / main / javaに移動しないのですか?または、コードを含む別のmavenプロジェクト/モジュールを作成し、依存関係として定義します。
khmarbaise 2012年

7
私の場合は、生成されたソースフォルダーを追加する必要があります。
djjeck 2013

あるいは、場所にもできます統合テスト以外のディレクトリにsrc/{main,test}/語ったとして、ここで
Y2K-shubham

これについてもここで説明されています:stackoverflow.com/q/270445/1061929
bjmi

回答:


143

ビルドヘルパープラグインを使用できます。例:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.7</version>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>some directory</source>
                ...
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

1
日食は本当にそのようなフォルダーbuildpathを誰にとってもの1つとして認識しますか?「それは私には必要ありません。FWIW、私m2eはプロジェクトのインポートに使用します。
mystarrocks 2014年

すばらしい答えです。明確にするために、maven-compiler-pluginを上からの行に置き換える必要があります...
Colin

IntelliJでも動作します。
Alexander Klimetschek 14

1
Eclipseから、ビルドヘルパーコネクタであるm2eのプラグインをインストールするように求められました。私はそれをしました、そしてライフサイクルエラーはなくなりました。
Alexis Dufrenoy 2016

1
Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.7:add-source (execution: add-source, phase: generate-sources)このエラーが発生する
Katie

35
注:このソリューションは、Javaソースファイルをtarget / classesディレクトリに移動するだけで、ソースをコンパイルしません。

pom.xmlとして更新-

<project>   
 ....
    <build>
      <resources>
        <resource>
          <directory>src/main/config</directory>
        </resource>
      </resources>
     ...
    </build>
...
</project>

2
NetBeansは魅力のようにそれを拾いました:)
Attila

1
ただし、Eclipse
Dormouse

@Dormouse、説明してくれませんか?
サイカット2014年

1
IntelliJでは機能しません。<resource>「リソース」フォルダーとして表示されますが、「ソース」フォルダーとしては表示されません。たとえば、内部のJavaソースファイルはコンパイルされません。
Alexander Klimetschek 2014

4
このソリューションは、Javaソースファイルをtarget / classesディレクトリに移動するだけで、ソースをコンパイルません
Stefan Haberl

12

7
これにより、デフォルトのsrc / main / javaディレクトリが上書きされます。複数のディレクトリが必要な場合は、デフォルトのディレクトリも指定する必要があります。
Natix

2
問題は、複数のソースディレクトリを追加する方法であり、1つのソースディレクトリのみを追加する方法を提案しています。これは、要求されたものとは逆です。
ジョアン・マトス

1

最近のMavenバージョン(3)と最近のバージョンのmavenコンパイラプラグイン(3.7.0)ではbuild-helper-maven-plugin、ビルドに追加するソースコードを含むフォルダーが次の場所にある場合、targetフォルダまたはそのサブフォルダ。
コンパイラーmavenプラグインは、このフォルダー内にあるJavaソースコードを、それらが含まれるディレクトリに関係なくコンパイルするようです。
一部(生成またはなし)ソースコード内に有する、例えばtarget/atarget/generated-source/fooOUTPUTDIRECTORYにコンパイルされ追加されますtarget/classes


-1

次のように、ビルドプロセスのディレクトリを追加できます。

    ...
   <resources>
     <resource>
       <directory>src/bootstrap</directory>
     </resource>
   </resources>
   ...

src / main / javaは、pom.xmlで言及する必要のないデフォルトのパスです。


2
なぜ人々は反対票を投じるのですか?基本的にはsaiky0(賛成票あり)と同じ答えですが、それより前ですか?
フリソ

15
@Frisoが正しくないため。リソースディレクトリを追加すると、リソースが追加されます(ファイルはにコピーされますtarget/classesが、コンパイルされません)。この質問は、コピーれるのtarget/classesではなく、にコンパイルされるファイルを保持するソースディレクトリの追加に関するものです。
ダースAndroid
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.