Могу ли я добавить файлы jar в maven 2 buildpath без их установки? - PullRequest
674 голосов
/ 12 декабря 2008

Maven2 сводит меня с ума во время фазы эксперимента / быстрого и грязного макета разработки.

У меня есть файл pom.xml, который определяет зависимости для инфраструктуры веб-приложений, которую я хочу использовать, и я могу быстро сгенерировать начальные проекты из этого файла. Однако иногда я хочу сделать ссылку на стороннюю библиотеку, в которой еще не определен файл pom.xml, вместо того, чтобы вручную создать файл pom.xml для сторонней библиотеки lib, установить его и добавить зависимость к my pom.xml, я просто хотел бы сказать Maven: «В дополнение к моим определенным зависимостям, включите любые jar-файлы, которые также находятся в /lib».

Кажется, это должно быть просто, но если это так, я что-то упускаю.

Любые указатели о том, как это сделать, с благодарностью. Если не считать этого, если есть простой способ указать maven на каталог /lib и легко создать pom.xml со всеми вложенными jar-файлами, сопоставленными с одной зависимостью, которую я мог бы затем назвать / установить и ссылаться на нее одним махом также будет достаточно.

Ответы [ 23 ]

0 голосов
/ 13 февраля 2014

Я сослался на код Python в комментарии к ответу @alex lehmann's, поэтому выкладываю его здесь.

def AddJars(jarList):
  s1 = ''
  for elem in jarList:
   s1+= """
     <dependency>
        <groupId>local.dummy</groupId>
        <artifactId>%s</artifactId>
        <version>0.0.1</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/manual_jars/%s</systemPath>
     </dependency>\n"""%(elem, elem)
  return s1
0 голосов
/ 02 марта 2012

В нашем проекте работает то, что написал Архимед Траяно, но в нашем файле .m2 / settings.xml было что-то вроде этого:

 <mirror>
  <id>nexus</id>
  <mirrorOf>*</mirrorOf>
  <url>http://url_to_our_repository</url>
 </mirror>

и * следует изменить на центральный. Так что, если его ответ не работает для вас, вы должны проверить свои settings.xml

0 голосов
/ 26 октября 2015

Мне просто нужен быстрый и грязный обходной путь ... Я не смог запустить скрипт от Никиты Волкова: синтаксическая ошибка + требуется строгий формат для имен банок.

Я создал этот Perl-скрипт, который работает с любым форматом для имен файлов jar, и он генерирует зависимости в xml, чтобы его можно было копировать и вставлять непосредственно в pom.

Если вы хотите использовать его, убедитесь, что вы понимаете, что делает скрипт, вам может потребоваться изменить папку lib и значение для groupId или artifactId ...

#!/usr/bin/perl

use strict;
use warnings;

open(my $fh, '>', 'dependencies.xml') or die "Could not open file 'dependencies.xml' $!";
foreach my $file (glob("lib/*.jar")) {
    print "$file\n";
    my $groupId = "my.mess";
    my $artifactId = "";
    my $version = "0.1-SNAPSHOT";
    if ($file =~ /\/([^\/]*?)(-([0-9v\._]*))?\.jar$/) {
        $artifactId = $1;
        if (defined($3)) {
            $version = $3;
        }
        `mvn install:install-file -Dfile=$file -DgroupId=$groupId -DartifactId=$artifactId -Dversion=$version -Dpackaging=jar`;
        print $fh "<dependency>\n\t<groupId>$groupId</groupId>\n\t<artifactId>$artifactId</artifactId>\n\t<version>$version</version>\n</dependency>\n";
        print " => $groupId:$artifactId:$version\n";
    } else {
        print "##### BEUH...\n";
    }
}
close $fh;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...