C'est mes premiers jours à apprendre le Maven et j'ai encore du mal avec les bases. J'ai un fichier .jar externe (non disponible dans les dépôts publics) que je dois référencer dans mon projet et j'essaie de déterminer quelle est ma meilleure option.
C'est un projet à petite échelle sans référentiel central pour les bibliothèques, il doit donc être soit un référentiel local (en quelque sorte ajouté au contrôle de source, je ne sais pas s'il est censé fonctionner de cette façon?) Ou le .jar doit être stocké sur disque en dehors de tout référentiel formel.
1) Quelle est ma meilleure option pour ajouter le fichier .jar aux références de mon projet avec maven étant donné que je veux que le projet et la bibliothèque soient sous contrôle de code source?
2) Je n'arrive toujours pas à voir Eclipse voir la dépendance. Je l'ai ajouté manuellement à la section du pom, et il apparaît bien dans la liste des dépendances dans m2eclipse. mvn compile et mvn package réussissent tous les deux, mais l'exécution du programme entraîne:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
LibraryStuff cannot be resolved to a type
C'est après avoir modifié le POM comme suit:
<dependency>
<groupId>stuff</groupId>
<artifactId>library</artifactId>
<version>1.0</version>
<systemPath>${lib.location}/MyLibrary.jar</systemPath>
<scope>system</scope>
</dependency>
Dois-je exécuter mvn install: install-file même si j'ai déjà le pom.xml édité comme ci-dessus?
Merci!
mvn install::install-file
: mkyong.com/mavenmvn install::install-file
sur votre référentiel local signifierait que toute personne qui clonerait votre code source devrait également faire cette étape manuelle. Sinon, la construction est cassée hors de la boîteVous pouvez créer un référentiel In Project, de sorte que vous n'ayez pas à le faire
run mvn install:install-file
chaque fois que vous travaillez sur un nouvel ordinateur/groupId/artifactId/version/artifactId-verion.jar
détail lire ce billet de blog
https://web.archive.org/web/20121026021311/charlie.cu.cc/2012/06/how-add-external-libraries-maven
la source
mvn install:install-file
, puis de copier la structure de répertoires entière de votre référentiel local vers votre référentiel de projet.Cela peut être facilement réalisé en utilisant l'élément <scope> imbriqué dans l'élément <dependency>.
Par exemple:
Référence: http://www.tutorialspoint.com/maven/maven_external_dependencies.htm
la source
install
objectif sur le projet dépendant. Ofc ayant un système airgapped et ayant tous les plugins sauf le plugin d'installation, est une situation assez rare."The POM for … is missing, no dependency information available” even though it exists in Maven Repository
Le manuel Maven dit de faire ceci:
la source
update Nous venons depuis d'installer notre propre serveur Nexus, beaucoup plus simple et plus propre.
Dans notre entreprise, nous avions des fichiers jar dont certains étaient communs mais qui n'étaient hébergés dans aucun référentiel maven, et nous ne voulions pas non plus les avoir dans le stockage local. Nous avons créé un repo mvn (public) très simple sur Github (mais vous pouvez l'héberger sur n'importe quel serveur ou localement):
notez que ce n'est idéal que pour gérer quelques fichiers jar rarement modifiés
Créez un dépôt sur GitHub:
https://github.com/<user_name>/mvn-repo/
Ajouter un référentiel dans pom.xml
(notez que le chemin complet du fichier brut sera un peu différent du nom du référentiel )
Ajouter une dépendance à l'hôte (Github ou serveur privé)
a. Tout ce que vous devez savoir, c'est que les fichiers sont stockés dans le modèle mentionné par @glitch
/groupId/artifactId/version/artifactId-version.jar
b. Sur votre hôte, créez les dossiers correspondant à ce modèle.
c'est-à-dire que si vous avez un fichier jar nommé
service-sdk-0.0.1.jar
, créez le dossierservice-sdk/service-sdk/0.0.1/
et placez-y le fichier jarservice-sdk-0.0.1.jar
.c. Testez-le en essayant de télécharger le fichier jar depuis un navigateur (dans notre cas:
https://github.com/<user_name>/mvn-repo/raw/master/service-sdk/service-sdk/0.0.1/service-sdk-0.0.1.jar
Ajoutez une dépendance à votre fichier pom.xml:
Prendre plaisir
la source
N'utilisez pas systemPath. Contrairement à ce que les gens ont dit ici, vous pouvez placer un fichier jar externe dans un dossier sous le répertoire de votre projet extrait et ne pas le trouver comme d'autres dépendances. Voici deux étapes cruciales:
C'est assez simple et vous pouvez trouver un exemple étape par étape ici: http://randomizedsort.blogspot.com/2011/10/configuring-maven-to-use-local-library.html
la source
Méthode Maven pour ajouter des pots non Maven au projet Maven
Projet Maven et pots non maven
Ajoutez les plugins d'installation maven dans votre section de construction
Ajouter la dépendance
Références Note Je suis le propriétaire du blog
la source
Si vous rencontrez le même problème et que vous utilisez spring-boot v1.4 + , vous pouvez le faire de cette manière.
Il existe un includeSystemScope que vous pouvez utiliser pour ajouter des dépendances de portée système au fichier jar.
par exemple
J'utilise le pilote oracle dans mon projet.
puis faites includeSystemScope = true pour inclure le fichier jar dans le chemin / BOOT-INF / lib / **
et exclure de la ressource pour éviter les doublons incluent, le pot est assez gros ~
Bonne chance!
la source
Changez votre systemPath .
la source
Le pom.xml va regarder votre référentiel local pour essayer de trouver la dépendance qui correspond à votre artefact. De plus, vous ne devriez pas vraiment utiliser la portée du système ou les attributs systemPath, ils sont normalement réservés aux éléments qui se trouvent dans le JDK et non dans le JRE.
Consultez cette question pour savoir comment installer les artefacts maven.
la source
Notez que tous les exemples qui utilisent
exiger externe
balises englobantes. Ce n'est pas clair d'après certains des exemples.
la source
La meilleure solution ici est d'installer un référentiel: Nexus ou Artifactory. Si vous donne un endroit pour mettre des choses comme ça, et plus loin, cela accélère les choses en mettant en cache vos affaires de l'extérieur.
Si la chose dont vous avez affaire est open source, vous pouvez également envisager de mettre en central.
Consultez le guide .
la source
Avec Eclipse Oxygen, vous pouvez faire les choses ci-dessous:
Maven les prendra lors de l'installation du projet.
la source
Si le fichier jar externe est créé uniquement par un projet Maven, vous pouvez copier l'intégralité du projet sur votre système et exécuter un
dans le répertoire du projet. Cela ajoutera le fichier jar dans le répertoire .m2 qui est le référentiel maven local.
Vous pouvez maintenant ajouter le
Cela garantira que vous
travaux. Si vous utilisez suggéré ici
Ensuite, vous devrez ajouter des classes individuellement tout en utilisant l'exécution via la ligne de commande.
Vous pouvez ajouter les fichiers JAR externes à l'aide de la commande suivante décrite ici
la source
Le moyen le plus efficace et le plus propre que j'ai trouvé pour résoudre ce problème est d'utiliser les packages Github
Créez un simple référentiel public / privé vide sur GitHub selon vos besoins, que vous souhaitiez que votre jar externe soit hébergé publiquement ou non.
Exécutez la commande ci-dessous maven pour déployer votre fichier jar externe dans le référentiel github créé ci-dessus
mvn deploy:deploy-file \ -DgroupId= your-group-id \ -DartifactId= your-artifact-id \ -Dversion= 1.0.0 -Dpackaging= jar -Dfile= path-to-file \ -DrepositoryId= id-to-map-on-server-section-of-settings.xml \ -Durl=https://maven.pkg.github.com/github-username/github-reponame-created-in-above-step
La commande ci-dessus déploiera votre fichier jar externe dans le référentiel GitHub mentionné dans
-Durl=
. Vous pouvez consulter ce lien sur Comment déployer des dépendances en tant que packages GitHub Tutoriel de déploiement de packages GitHubAprès cela, vous pouvez ajouter la dépendance en utilisant
groupId
,artifactId
etversion
mentionné à l'étape ci-dessus dans mavenpom.xml
et exécutermvn install
Maven récupérera la dépendance du fichier jar externe à partir du registre des packages GitHub et fournira dans votre projet maven.
Pour que cela fonctionne, vous devrez également configurer vos mavens pour
settings.xml
qu'ils récupèrent à partir du registre de packages GitHub.la source