construire un projet maven avec des bibliothèques de propriété inclus [dupliquer]

cette question a déjà une réponse ici:

  • comment ajouter des fichiers jar locaux à un projet Maven? 27 Réponses

comment créer maven pom, ce qui rendra le projet buildable, puis-je inclure des pots de propriatery avec mon projet directement sans avoir à les prendre à partir du dépôt? quiconque fait cela avant ?

EDIT:

Je ne veux pas le faire fonctionner en construisant l'assemblage avec des dépendances jar, je veux qu'il soit buildable. Donc, quiconque ayant ce projet est capable de le construire, même si les pots ne sont pas trouvés dans un dépôt.

35
demandé sur Jigar Joshi 2010-12-20 18:43:33

11 réponses

1 soit vous pouvez inclure ce pot dans votre chemin de classe d'application

2 vous pouvez installer le fichier jar particulier dans votre Maven reopos par

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \
    -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
46
répondu Jigar Joshi 2010-12-20 16:00:11

solutions possibles est de mettre vos dépendances dans src / main / resources puis dans votre pom:

<dependency>
groupId ...
artifactId ...
version ...
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/yourJar.jar</systemPath>
</dependency>

Note: les dépendances du système ne sont pas copiées dans le résultat jar / war

(voir comment inclure les dépendances de système dans la guerre construit en utilisant maven )

31
répondu ant 2017-07-25 14:26:26

créez un dossier de dépôt dans le cadre de votre projet. Prenons

${project.basedir}/src/main/resources/repo

ensuite, installez votre jar personnalisé à ce rapport:

mvn install:install-file -Dfile=[FILE_PATH] \
-DgroupId=[GROUP] -DartifactId=[ARTIFACT] -Dversion=[VERS] \ 
-Dpackaging=jar -DlocalRepositoryPath=[REPO_DIR]

enfin, ajouter les définitions suivantes de rapport et de dépendance aux projets pom.xml:

<repositories>
    <repository>
        <id>project-repo</id>
        <url>file://${project.basedir}/src/main/resources/repo</url>
    </repository>
</repositories>

<dependencies>    
    <dependency>
        <groupId>[GROUP]</groupId>
        <artifactId>[ARTIFACT]</artifactId>
        <version>[VERS]</version>
    </dependency>
</dependencies>
18
répondu mostar 2015-03-26 07:13:40

pourquoi ne pas lancer quelque chose comme Nexus , votre propre Maven repo que vous pouvez télécharger des fichiers JAR propriétaires tiers, et aussi proxy d'autres dépôts publics, pour enregistrer sur bandwith?

ce a également de bonnes raisons d'exécuter votre propre gestionnaire de dépôt maven.

7
répondu Larry Shatzer 2013-01-30 22:49:51

vous pouvez l'obtenir de votre chauffeur local comme ci-dessous:

<dependency>
      <groupId>sample</groupId>  
       <artifactId>com.sample</artifactId>  
       <version>1.0</version> 
      <scope>system</scope>
      <systemPath>${project.basedir}/src/main/resources/yourJar.jar</systemPath>
</dependency>
7
répondu Alireza Fattahi 2014-12-12 07:24:43

la manière vraiment rapide et sale est de pointer vers un fichier local:

<dependency>
      <groupId>sample</groupId>  
       <artifactId>com.sample</artifactId>  
       <version>1.0</version> 
      <scope>system</scope>
      <systemPath>C:\DEV\myfunnylib\yourJar.jar</systemPath>
</dependency>

Cependant, cela ne sera en direct sur votre machine (évidemment), pour le partage habituellement, il est logique d'utiliser un bon m2 d'archives (nexus/artifactory) ou si vous n'avez pas ou ne voulez pas installer un local maven structurés et configurer un "référentiel" dans votre pom: local:

<repositories>
    <repository>
        <id>my-local-repo</id>
        <url>file://C:/DEV//mymvnrepo</url>
    </repository>
</repositories>

distance:

<repositories>
    <repository>
        <id>my-remote-repo</id>
        <url>http://192.168.0.1/whatever/mavenserver/youwant/repo</url>
    </repository>
</repositories>
5
répondu fl0w 2016-03-01 14:44:35

un bon moyen d'y parvenir est d'avoir un serveur miroir Maven tel que Nexus Type son . Il est gratuit et très facile à configurer (Java Web app). Avec Nexus, il est possible d'avoir un dépôt privé (d'équipe, d'entreprise, etc.) avec la possibilité de déployer des applications externes et internes, tout en enregistrant d'autres dépôts Maven comme faisant partie du même serveur. De cette façon, les paramètres Maven locaux se référeraient seulement au serveur Nexus privé et toutes les dépendances seront être résolu en l'utilisant.

3
répondu 01es 2010-12-20 16:11:04

vous pouvez soit ajouter le jar à votre projet et jouer avec le maven-assembly-plugin, soit ajouter le jar à votre dépôt local:

mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> -DgeneratePom=true

Where: <path-to-file>  the path to the file to load
       <group-id>      the group that the file should be registered under
       <artifact-id>   the artifact name for the file
       <version>       the version of the file
       <packaging>     the packaging of the file e.g. jar
1
répondu David J. Liszewski 2010-12-20 16:02:13

je pense que la "bonne" solution est d'ajouter vos propres bibliothèques de votre propre référentiel. Cela devrait être simple: créer des pom pour votre projet de bibliothèque et publier la version compilée sur votre dépôt. Ajoutez ce dépôt à la liste des dépôts pour votre projet de messagerie et exécutez build. Je crois qu'il va travailler pour vous.

1
répondu AlexR 2010-12-20 16:35:04

vous pouvez utiliser le Maven-assembly-plugin et créer un bocal avec toutes les dépendances incluses.

1
répondu jvdbogae 2013-01-30 23:03:15

créez un nouveau dossier, disons local-maven-repo à la racine de votre projet Maven.

il suffit d'ajouter un rapport local à votre <project> de votre pom.xml :

<repositories>
    <repository>
        <id>local-maven-repo</id>
        <url>file:///${project.basedir}/local-maven-repo</url>
    </repository>
</repositories>

ensuite, pour chaque pot externe que vous voulez installer, allez à la racine de votre projet et exécutez:

mvn deploy:deploy-file -DgroupId=[GROUP] -DartifactId=[ARTIFACT] -Dversion=[VERS] -Durl=file:./local-maven-repo/ -DrepositoryId=local-maven-repo -DupdateReleaseInfo=true -Dfile=[FILE_PATH]

(copie de ma réponse à une question similaire )

1
répondu Anthony O. 2017-05-23 12:02:14