Yat-il un référentiel maven application Java à démarrer rapidement 11


Prakhar Mishra:

Il y a un archétype maven QuickStart pour Java 7, comme je peux voir ici: https://maven.apache.org/archetypes/maven-archetype-quickstart/ Le problème est quand je tire cette commande:

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart

Entrez le répertoire du projet et le feu cette commande:

mvn package

Je reçois cette erreur:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test (default-test) on project gfg-stuff: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.20.1:test failed. NullPointerException

S'il vous plaît noter qu'il ya un problème avec mon installation JDK, comme update-alternativesme dit que je courais 11 JDK:

$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                         Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1101      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1101      manual mode
  2            /usr/lib/jvm/java-8-oracle/jre/bin/java       1081      manual mode

Mais, quand je lance java -version, il me donne ceci:

$ java -version
openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.3, mixed mode)

Je ne sais pas pourquoi je ne reçois pas OpenJDK 11, malgré le fait que j'ai installé 11 seulement dans JDK premier lieu. Peut-être va commencer un thread différent sur ce point.

Basil Bourque:

tl; dr

L' quickstartarchétype, malheureusement, est souvent obsolète.

Mettez à jour votre maven-surefire-pluginélément de votre POM à la dernière version telle que 3.0.0-M3.

Mettez à jour vos dépendances à la version actuelle

Bizarrement, l' maven-archetype-quickstartartefact est jamais tenue à jour . Il énumère les dépendances avec les anciennes versions qui peuvent ne pas fonctionner correctement avec les dernières versions de Java, votre IDE, ou d' autres bibliothèques.

Ceci est assez frustrant, car on pourrait penser que l'artefact serait maintenu à jour via un script automatisé. Après tout, tout le point de Maven est de faire ce genre de corvée de configuration facile et automatisée!

Heureusement, vous pouvez facilement mettre à jour les numéros de version vous-même.

Comment savez-vous quel est le dernier numéro de version pour entrer pour chaque dépendance?

  • Vous pouvez rechercher manuellement le dernier numéro de version en utilisant le site Web d'un dépôt Maven. Copiez-collez le numéro de version à votre POM.
  • Vous pouvez laisser votre IDE (IntelliJ, NetBeans, etc.) suggèrent le dernier numéro que vous modifiez le numéro de version valeur de l' élément XML. Vous pouvez ou ne pouvez pas taper une « aide-moi » combinaison de touches en fonction de la façon dont fonctionne votre IDE. Avant de le faire, assurez - vous de mettre à jour le cache de votre IDE de données du référentiel Maven il connaît les chiffres plus récents de la version actuelle. Par exemple, dans IntelliJ aller dans les préférences, et dans le champ de recherche de paramètres, le type repo, et dans la liste des référentiels connus cliquez sur chaque Updatebouton.

Pas

Tout d' abord, si vous utilisez votre IDE pour travailler avec Maven, assurez - vous de mettre à jour son cache de données du référentiel Maven de sorte que vous obtenez le dernier quickstartartefact. Par exemple, dans IntelliJ, Preferences> Build, Execution, Deployment> Build tools> Maven> Repositories> Updatebouton.

entrez la description d'image ici

Le POM initial devrait se développer dans un plus grand. Vous devrez peut - être un Maven cleanet install.

Après la première utilisation, passez par votre POM.

<?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>work.basil.work.example</groupId>
  <artifactId>quickstart</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>quickstart</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

Sur chaque élément dans le POM, changer le numéro de version au plus tard.

Votre IDE peut aider en vous montrant une liste des numéros de version, il connaît.

entrez la description d'image ici

Ou utiliser un site Web du référentiel Maven pour vérifier le dernier numéro de version. Comme cela :

entrez la description d'image ici

Vous trouverez peut-être la plupart des articles sont hors de ce jour. En particulier, en ce qui concerne le problème de la surefire décrit dans la question, changer l'élément infaillible pour v3.

    <plugin>
      <artifactId>maven-surefire-plugin</artifactId>
      <version>3.0.0-M3</version>
    </plugin>

This will fix your surefire specifically, in my experience. Some problems were recently fixed in later versions. I don’t recall the nature of the problems, perhaps related to the Java Platform Module System.

My version of the POM after updating to the latest as of 2019-05-29.

<?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>work.basil.work.example</groupId>
  <artifactId>quickstart</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>quickstart</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
  </properties>

  <dependencies>
    <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>5.5.0-M1</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.0.0-M3</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.1.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.0.0-M1</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.0.0-M1</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

JUnit

Notice I also updated JUnit from v4 to the vastly improved v5 "Jupiter". If you do this, you will also need to update the AppTest.java file to simply change the import lines.

Old:

package work.basil.work.example;

import static org.junit.Assert.assertTrue;

import org.junit.Test;

/**
 * Unit test for simple App.
 */
public class AppTest 
{
    /**
     * Rigorous Test :-)
     */
    @Test
    public void shouldAnswerWithTrue()
    {
        assertTrue( true );
    }
}

New:

package work.basil.work.example;

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertTrue;

/**
 * Unit test for simple App.
 */
public class AppTest 
{
    /**
     * Rigorous Test :-)
     */
    @Test
    public void shouldAnswerWithTrue()
    {
        assertTrue( true );
    }
}

Lastly, do a Maven clean and install to get those latest versions of your dependencies actually installed inside your app.

By the way, for more about JUnit Jupiter, and how to run old JUnit 3 & 4 testes, see my Answer to another Question.

Articles connexes


Existe-t-il un référentiel Maven pour Spring 4?

Nicolas Mommaerts : Je recherche Spring 4.0 M1, à utiliser avec Java 8. Selon ce problème, il devrait y avoir une version, mais je ne peux pas le trouver. Idéalement, il y aurait un dépôt Maven, mais je ne trouve même pas de téléchargement régulier? Paul Gray:

Suppression d'une version d'un référentiel distant Maven

c.abate: Je travaille actuellement sur mon premier projet Maven et j'ai rencontré une certaine confusion avec la gestion des versions de Maven. Je comprends que lors du développement d'une nouvelle version, le mot clé SNAPSHOT doit être utilisé dans le numéro

Existe-t-il un référentiel Maven pour les artefacts Solace?

carlspring J'essaie de savoir s'il existe un référentiel Maven pour les artefacts Solace. D'après ce que j'ai vérifié, ceux-ci ne sont pas disponibles via Maven Central. Nous aimerions les utiliser via notre gestionnaire de référentiels Nexus. S'ils ne sont pa

Comment définir le référentiel local Maven dans un projet Java

chinloyal Je suis nouveau chez maven. Mon équipe et moi essayons de travailler avec maven sur git, mais lorsque je partage mon code sur git, le fichier .classpath a une dépendance qui pointe vers l'emplacement de mon utilisateur: <classpathentry kind="lib" pat

Est-il sûr d'exposer Okta clientId dans un référentiel public?

Bas de Groot Pour configurer l' authentification Okta dans une application Angular, il est nécessaire d'ajouter une configvariable avec les paramètres de votre OIDCapplication dans le app.module.tsfichier. la source const config = { issuer: 'https://dev-12

Déterminez s'il est sûr de supprimer un référentiel git local

Herbert J'ai très souvent un clone de développement d'un référentiel git sur mon ordinateur portable, sur lequel je crée des branches de fonctionnalités et autres pour implémenter des fonctionnalités. Quand je travaille à mi-chemin sur une fonctionnalité, mais

Yat-il un moyen d'exposer une couche lambda AWS publiquement?

Omer Shliva J'aimerais comprendre l'aspect conformité de la couche lambda. Peut-il être exposé publiquement à dessein ou non ? jarmod Publier votre couche Lambda à l' AWS Serverless Application Repository , et de le partager (soit public ou privé).