2017-04-12 11 views
2

私はパッケージ化しようとしているMavenプロジェクトを持っていますが、私のJavaテストクラス(私のScalaテストクラスはありません)と生成されたAvroテストクラスはすべてjarファイルになっています。Mavenプロジェクトのパッケージ化テストファイルはなぜですか?

フォルダ構造は正常に見える:

enter image description here

また、私は<scope>test</scope>との依存関係としてのJUnitを追加する場合、それはJUnitのクラスを見つけることができないとして、私のテストがコンパイルされないことに気づいたので、 Mavenはテストを含むすべてのコードをmainの一部として扱っているようです。

ポンポン:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.me</groupId> 
    <artifactId>proj</artifactId> 
    <version>1.0.0</version> 

    <properties> 
     <log4j.version>2.8.1</log4j.version> 
    </properties> 

    <dependencies> 
     ... 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.scalatest</groupId> 
       <artifactId>scalatest-maven-plugin</artifactId> 
       <executions> 
        <execution> 
         <id>test</id> 
         <goals> 
          <goal>test</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>net.alchim31.maven</groupId> 
       <artifactId>scala-maven-plugin</artifactId> 
       <version>3.2.1</version> 
       <executions> 
        <execution> 
         <id>scala-compile-first</id> 
         <phase>process-resources</phase> 
         <goals> 
          <goal>add-source</goal> 
          <goal>compile</goal> 
         </goals> 
        </execution> 
        <execution> 
         <id>scala-test-compile</id> 
         <phase>process-test-resources</phase> 
         <goals> 
          <goal>testCompile</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <scalaVersion>2.11.8</scalaVersion> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.avro</groupId> 
       <artifactId>avro-maven-plugin</artifactId> 
       <version>1.8.1</version> 
       <executions> 
        <execution> 
         <phase>generate-sources</phase> 
         <goals> 
          <goal>schema</goal> 
         </goals> 
         <configuration> 
          <sourceDirectory>${project.basedir}/src/test/resources/</sourceDirectory> 
          <outputDirectory>${project.basedir}/src/test/java</outputDirectory> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.6.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
       <executions> 
        <execution> 
         <phase>compile</phase> 
         <goals> 
          <goal>compile</goal> 
         </goals> 
        </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> 
     </plugins> 
    </build> 


</project> 
+0

これは、または単にScalaのため、同様にJavaで書かれたテストのために発生しますか? –

+0

まったく同じ問題ではない場合でもこれを見てください:http://stackoverflow.com/questions/13157815/intellij-idea-sudenly-wont-recognize-tests-in-test-folder –

+0

@JiriTousekそれは、Scalaテストのどれもが瓶に入っていないので、Javaのものだけです。 – karoma

答えて

0

はそれを考え出しインストールしてください。

問題はavro-maven-pluginにありました。

両方ともテストソースパスを持つsourceDirectoryoutputDirectoryの構成です。

<configuration> 
    <sourceDirectory>${project.basedir}/src/test/resources/</sourceDirectory> 
    <outputDirectory>${project.basedir}/src/test/java</outputDirectory> 
</configuration> 

どうやらこれらは、これらのディレクトリは、メインのソースディレクトリであり、メインクラスの残りの部分とそれらを一緒にコンパイルすることを考えたコンパイラプラグインと干渉しました。これはまた、junitの依存関係にテストスコープが与えられたときに私のテストがコンパイルに失敗した理由を説明します。

ソリューションを使用していたtestSourceDirectory、代わりにtestOutputDirectory

<configuration> 
    <testSourceDirectory>${project.basedir}/src/test/resources/</testSourceDirectory> 
    <testOutputDirectory>${project.basedir}/src/test/java</testOutputDirectory> 
</configuration> 
-4

MVNクリーン-Dmaven.test.skip = trueを-X

+0

これは、問題を解決する代わりにテストをスキップするだけです。 –

+0

これはこの質問に対する正解ではありません。 – Bevor

関連する問題