5

特定のmavenプロファイルを使用するときにコンパイルしないクラスをmavenで指定できる実用的なソリューションがすでにあります。

しかし、一般的な解決策を使用し、代わりに注釈を使用したいと思います

私が持っている現在の解決策は次のようなものです

<plugin>
    <!-- Exclude some web services used only for internal testing -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <optimize>true</optimize>
        <excludes>
            <exclude>**/something/*ClassPattern.java</exclude>
        </excludes>
        <testExcludes>
            <exclude>**/something/*ClassPatternTest.java</exclude>
        </testExcludes>
    </configuration>
</plugin>

しかし、いくつかのような

@NotCompiledForProduction 

クラスの上にかなりいいでしょう。

Maven の動作を変更しないと、これは難しい (または実行できない) ように思えます。それはここでの範囲ではありません。そして、この種の注釈

4

2 に答える 2

1

注釈を処理するために最初にソースコードをコンパイルする必要があるため、Javaコンパイラに提示されるソースコードを決定するために注釈を使用することはできません(私は推測します)。

Maven プロジェクトでさまざまなモジュールを作成する必要があるようです。1 つは製品コードで jar ファイルを生成し、もう 1 つは製品アーティファクトに依存するテスト実装で jar ファイルを生成するモジュールです。

コードが実際に同じ Maven モジュールにある必要がある場合は、コードを常にコンパイルする必要があります。ただしmaven-jar-plugin、フェーズで複数のアーティファクトを作成するために使用できpackageます: デフォルトのartifactId.jarおよびartifactId-test-lib.jarアーティファクト。これを行うには、プラグインの複数の実行を指定し、必要に応じて および を使用<includes><excludes>て jar ファイルを分割します。

于 2014-10-09T01:40:30.257 に答える
0

あなたはこれを試すことができます...

<build> <plugins>
  <!-- Run annotation processors on src/main/java sources -->
  <plugin>
    <groupId>org.bsc.maven</groupId>
    <artifactId>maven-processor-plugin</artifactId>
    <executions>
      <execution>
        <id>process</id>
        <goals>
          <goal>process</goal>
        </goals>
        <phase>generate-sources</phase>
      </execution>
    </executions>
  </plugin>
  <!-- Disable annotation processors during normal compilation -->
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <compilerArgument>-proc:none</compilerArgument>
    </configuration>
  </plugin>
</plugins> </build>
于 2013-02-18T15:05:57.803 に答える