2017-09-26 1 views
0

je le fichier pom.xml suivant:Maven + vert.x - « junit.framework paquet n'existe pas »

<?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>cdt</groupId> 
    <artifactId>cdt-hive-vertx</artifactId> 
    <version>3.4.2</version> 
    <packaging>jar</packaging> 
    <name>cdt-hive-vertx</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <exec.mainClass>cdt.HelloWorldEmbedded</exec.mainClass> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>io.vertx</groupId> 
      <artifactId>vertx-core</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
    </dependencies> 

    <build> 

     <pluginManagement> 
      <plugins> 
       <!-- We specify the Maven compiler plugin as we need to set it to Java 1.8 --> 
       <plugin> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.1</version> 
        <configuration> 
         <source>1.8</source> 
         <target>1.8</target> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 

     <!-- 
     You only need the part below if you want to build your application into a fat executable jar. 
     This is a jar that contains all the dependencies required to run it, so you can just run it with 
     java -jar 
     --> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-shade-plugin</artifactId> 
       <version>2.3</version> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>shade</goal> 
         </goals> 
         <configuration> 
          <transformers> 
           <transformer 
             implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
            <manifestEntries> 
             <Main-Class>${exec.mainClass}</Main-Class> 
            </manifestEntries> 
           </transformer> 
           <transformer 
             implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> 
            <resource>META-INF/services/io.vertx.core.spi.VerticleFactory</resource> 
           </transformer> 
          </transformers> 
          <artifactSet> 
          </artifactSet> 
          <outputFile>${project.build.directory}/${project.artifactId}-${project.version}-fat.jar 
          </outputFile> 
         </configuration> 
        </execution> 
       </executions> 


      </plugin> 

      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.4.0</version> 
       <executions> 
        <execution> 
         <!-- run the application using the fat jar --> 
         <id>run-app</id> 
         <goals> 
          <goal>exec</goal> 
         </goals> 
         <configuration> 
          <executable>java</executable> 
          <arguments> 
           <argument>-jar</argument> 
           <argument>target/${project.artifactId}-${project.version}-fat.jar</argument> 
          </arguments> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 


    <profiles> 
     <profile> 
      <id>staging</id> 
      <repositories> 
       <repository> 
        <id>staging</id> 
        <url>https://oss.sonatype.org/content/repositories/iovertx-3684/</url> 
       </repository> 
      </repositories> 
     </profile> 
    </profiles> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>junit</groupId> 
       <artifactId>junit</artifactId> 
       <version>4.8.2</version> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 


</project> 

quand je lance:

mvn clean package exec:java 

je reçois:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project cdt-hive-vertx: Compilation failure: Compilation failure: 
[ERROR] /Users/alexamil/WebstormProjects/nabisco/cdt-hive-vertx/src/test/java/cdt/HelloWorldEmbeddedTest.java:[3,23] package junit.framework does not exist 
[ERROR] /Users/alexamil/WebstormProjects/nabisco/cdt-hive-vertx/src/test/java/cdt/HelloWorldEmbeddedTest.java:[4,23] package junit.framework does not exist 
[ERROR] /Users/alexamil/WebstormProjects/nabisco/cdt-hive-vertx/src/test/java/cdt/HelloWorldEmbeddedTest.java:[5,23] package junit.framework does not exist 
[ERROR] /Users/alexamil/WebstormProjects/nabisco/cdt-hive-vertx/src/test/java/cdt/HelloWorldEmbeddedTest.java:[7,45] cannot find symbol 

l'erreur se produit à cause du cas de test simple je:

package cdt; 

import junit.framework.Test; // cannot find these files 
import junit.framework.TestCase; 
import junit.framework.TestSuite; 

public class HelloWorldEmbeddedTest extends TestCase { 


} 

mais j'ai jonit référencé dans mon fichier pom.xml dans la section <dependencyManagement>.

Quelqu'un sait ce qui pourrait ne pas fonctionner?

+1

Je crois que "junit.framework" est obsolète. Le nom du paquet devrait être "org.junit" si vous utilisez JUnit 4.12. – duffymo

Répondre

1

Peu de choses sur la mise en œuvre: -

Première, car le module utilise les paquets de junit, vous devez inclure cela aussi bien dans <dependencies> étiquette au lieu de <dependencyManagement> comme:

<dependencies> 
    <dependency> 
     <groupId>io.vertx</groupId> 
     <artifactId>vertx-core</artifactId> 
     <version>${project.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.8.2</version> 
     <scope>test</scope> <!-- this could be just for tests --> 
    </dependency> 
</dependencies> 

Deuxième, S'il vous plaît noter si je ne peux pas trouver les docs java pour la version spécifiée de junit artefact, mais trusting this question me semble que la version 4.+ de la bibliothèque utilise une classe @org.junit.Test au lieu de ce que vous aviez utilisé dans votre classe, c'est-à @junit.framework.Test. Vous voudrez peut-être changer le nom du dernier paquet si la version l'a dans vos classes.