web-dev-qa-db-fra.com

Maven: crée une structure de répertoire à partir de pom.xml

J'ai maven un fichier pom.xml (copié d'un autre projet et adapté) et j'aimerais générer la structure de répertoires pour un nouveau projet. Quelle commande peut le faire?

Notez que j'ai trouvé d'innombrables exemples sur le Web expliquant comment utiliser mvn archetype: create pour créer un fichier pom.xml et la structure de répertoires, mais j'ai déjà un pom.xml, et j'aimerais créer les répertoires basés sur cela, sans spécifier groupId, artifactId, etc. sur la ligne de commande. 

mvn archetype: create-from-project semble également créer un fichier pom.xml basé sur un autre fichier pom.xml (?), mais je ne souhaite que les répertoires. Merci d'avance!

EDIT: Je suis conscient que ce n’est pas un "gros problème" car je peux créer les répertoires manuellement :) Je l’ai déjà fait plusieurs fois et j’ai toujours pensé qu’il devait y avoir un moyen plus intelligent de le faire .. .

23
lbalazscs

Pas pour paraître condescendant, mais:

mkdir -p src/main/Java
mkdir -p src/main/resources
mkdir -p src/test/Java
mkdir -p src/test/resources

(ou n'hésitez pas à substituer des répertoires différents).

Je ne connais aucune commande maven permettant de créer cette structure pour vous sans créer un nouveau fichier pom.

10
Matt

Je suis d'accord qu'il y a devrait un moyen de spécifier que maven lui-même devrait regarder mon pom et générer une structure de projet/répertoire à partir de cela. Je ne sais pas comment faire cela, mais voici ce que je fais:

Step 1: déplacez votre pom.xml déjà créé ailleurs (maven se plaindra si vous l'avez déjà dans le répertoire où vous allez exécuter la commande suivante)

Step 2: à partir de la ligne de commande, dans votre nouveau répertoire de projet maven, exécutez:

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DgroupId=my.package.path -DartifactId=myartifact

Vous devez éditer groupId et artifactId pour correspondre à votre pom (soupir), mais cela crée la structure de répertoires de base pour vous et une classe Java et un test d'unités par défaut.

Step 3: déplacez/copiez votre pom.xml dans ce répertoire de projet

Step 4: lancez une commande maven telle que mvn clean package ou mvn dependency:tree pour lancer le téléchargement des dépendances

Note: J'inclus cette réponse car certaines des réponses précédentes recommandent d'utiliser mvn archetype:create, mais selon le site Web maven cet objectif est déconseillé en faveur de l'utilisation de generate. Et je voulais montrer comment le faire indépendamment des plugins IDE ou IDE.

15
quux00

Il me semble que vous créez un gros problème avec un petit.

J'essayais d'utiliser mvn archetype:create-from-project ... et de simplement remplacer le fichier POM généré par le fichier d'origine.

Et comme le suggère Peter Lawrey, de nombreux IDE modernes sont capables de créer une structure de projet Maven.

2
Stephen C

De la réponse analogue à Matt, ces lignes créeront la structure de dossiers maven par défaut sur le système d’exploitation Microsoft Windows. Exécutez-les à partir du répertoire où votre pom.xml existe:

mkdir -p src/main/Java
mkdir -p src/main/resources
mkdir -p src/test/Java
mkdir -p src/test/resources

Je me demande pourquoi il n'y a pas de commande maven pour cela. Vous pouvez soit exécuter les commandes mkdir ci-dessus, soit utiliser un archétype à la place, à savoir quickstart. Il y a la structure de dossier déjà dans la boîte.

2
Stimpson Cat

Utilisez le plugin Maven Build Helper . L'utilisation est assez simple. Configurez simplement la section plugins de votre pom et appelez le ou les objectifs mvn appropriés.

De la documentation:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.10</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>
0
pavakah

Ouvrir la ligne de commande, changer le répertoire dans le dossier avec le pom.xml
et passé ceci dans le CMD:

echo This will create all required folders for maven project.
echo creating  Application\Library sources
MD "src\main\Java"
echo creating  Application\Library resources
MD "src\main\resources"
echo creating  Resource filter files
MD "src\main\filters"
echo creating  Web application sources
MD "src\main\webapp"
echo creating  Test sources
MD "src\test\Java"
echo creating  Test resources
MD "src\test\resources"
echo creating  Test resource filter files
MD "src\test\filters"
echo creating  Integration Tests (primarily for plugins)
MD "src\it"
echo creating  Assembly descriptors
MD "src\Assembly"
echo creating  Site
MD "src\site"
0
user648026

Maven peut le générer pour vous en utilisant l'archétype Quickstart: 

mvn archetype:generate \
    -DgroupId=com.mydomain \
    -DartifactId=my-project \
    -DarchetypeArtifactId=maven-archetype-quickstart

Ensuite, copiez et collez votre fichier pom.xml existant dans le même répertoire que le fichier pom.xml généré.

0
cosbor11