пакет не существует при создании WAR [duplicate]

Способ sizeof - это правильный путь iff , который вы имеете в виду массивы, не полученные в качестве параметров. Массив, отправленный как параметр функции, рассматривается как указатель, поэтому sizeof вернет размер указателя вместо массива.

Таким образом, внутри функций этот метод не работает. Вместо этого всегда передавайте дополнительный параметр size_t size, указывающий количество элементов в массиве.

Тест:

#include 
#include 

void printSizeOf(int intArray[]);
void printLength(int intArray[]);

int main(int argc, char* argv[])
{
    int array[] = { 0, 1, 2, 3, 4, 5, 6 };

    printf("sizeof of array: %d\n", (int) sizeof(array));
    printSizeOf(array);

    printf("Length of array: %d\n", (int)( sizeof(array) / sizeof(array[0]) ));
    printLength(array);
}

void printSizeOf(int intArray[])
{
    printf("sizeof of parameter: %d\n", (int) sizeof(intArray));
}

void printLength(int intArray[])
{
    printf("Length of parameter: %d\n", (int)( sizeof(intArray) / sizeof(intArray[0]) ));
}

Выход (в 64-разрядной ОС Linux):

sizeof of array: 28
sizeof of parameter: 8
Length of array: 7
Length of parameter: 2

Вывод (в 32-разрядной ОС Windows):

sizeof of array: 28
sizeof of parameter: 4
Length of array: 7
Length of parameter: 1

838
задан MozenRath 7 February 2018 в 09:33
поделиться

27 ответов

  1. mvn install

Вы можете написать код ниже в командной строке или если вы используете eclipse builtin maven, щелкните правой кнопкой мыши по проекту -> Run As -> run configurations ... -> в левой панели щелкните правой кнопкой мыши на Maven Build -> new configuration -> напишите код в Goals & amp; в базовом каталоге: $ {project_loc: NameOfYourProject} -> Run

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

Где каждый относится к:

& lt; путь к файлу>: путь к файлу для загрузки, например, -> c: \ kaptcha-2.3.jar

& lt; group-id>: группа, в которой файл должен быть зарегистрирован, например, -> com.google.code

& lt; artifact-id>: имя артефакта для файла, например, -> kaptcha

& lt; version>: версия файла e.g -> 2.3

& lt; упаковка>: упаковка файла, например. -> jar

2. После установки просто объявляет jar в pom.xml.

 <dependency>
      <groupId>com.google.code</groupId>
      <artifactId>kaptcha</artifactId>
      <version>2.3</version>
 </dependency>
434
ответ дан Mazen Embaby 15 August 2018 в 15:12
поделиться
  • 1
    В инструкциях по установке на моей сборке было все, кроме части generatePom. Это, по-видимому, имеет решающее значение. – Jason D 14 July 2014 в 19:43
  • 2
    & Lt; путь к файлу & GT; что это значит ? Как и C: /Users/XXX/WorkspaceDocx/maven/src/main/resources/myJar.jar ...... или мы можем сделать $ {project.basedir} /src/main/resources/myJar.jar – Igor Beaufils 10 August 2015 в 14:06
  • 3
    В ответе не упоминается README или что банки собраны. Однако, если проект приносит банки, тогда вы можете также разместить репо в проекте, как указано здесь stackoverflow.com/a/36602256/1000011 , тогда вам не нужно README в качестве проекта будет работать так, как если бы банки были в центре maven без каких-либо дополнительных шагов управления. – opticyclic 27 June 2016 в 23:34
  • 4
    @opticyclic ваш комментарий нуждается в большем количестве оборотов, или этот ответ нужно отредактировать. Это рецепт катастрофы для новичков, которые не понимают, что установка на локальный репозиторий Maven не будет включена для всех остальных. – Mike S 28 July 2016 в 18:40
  • 5
444
ответ дан Mazen Embaby 5 September 2018 в 14:18
поделиться

Чтобы установить стороннюю банку, пожалуйста, вызовите команду, как показано ниже

mvn install:install-file -DgroupId= -DartifactId= -Dversion= -Dpackaging=jar -Dfile=path
0
ответ дан Alexander Farber 15 August 2018 в 15:12
поделиться

Вы можете напрямую добавлять локальные зависимости (как указано в проекте build maven с включенными библиотеками propriatery ):

<dependency>
    <groupId>com.sample</groupId>
    <artifactId>sample</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/yourJar.jar</systemPath>
</dependency>
1019
ответ дан Alireza Fattahi 15 August 2018 в 15:12
поделиться
  • 1
    Иногда вы хотите специально протестировать старую банку, например, и я думаю, что этот ответ подходит для этого. Это то, что мне нужно. Upvoted – John Lockwood 31 October 2014 в 22:19
  • 2
    Внешняя папка лучше? В этом примере <systemPath> предлагается папка внутри проекта. Будет ли иметь смысл хранить такие банки в папке, внешней по отношению к проекту? Похоже на небольшой псевдо-репозиторий. Я предполагаю, что Maven вытаскивает копию фляги из такой внешней папки. – Basil Bourque 6 June 2015 в 21:49
  • 3
    Как хорошо и просто, как это выглядит, это решение имеет проблему, что вашJar.jar не будет включен в WAR-файл для вашего приложения. – Matthias 3 August 2015 в 20:58
  • 4
    Выше решение больше не работает, оно возвращает: & quot; 'dependencies.dependency.systemPath' для xx.jar не должен указывать на файлы в каталоге проекта & quot; Это уже было описано в stackoverflow.com/questions/10935135/… – sarah.ferguson 9 December 2015 в 15:31
  • 5
    В этом ответе, не являются ли artifactId и groupId неправильными? – theonlygusti 8 March 2017 в 09:18
  • 6

ЭТО ОТВЕТ ТОЛЬКО ДЛЯ ПОЛЬЗОВАТЕЛЕЙ ECLIPSE:

Если вы используете Eclipse, поместите банку в lib /, щелкните правой кнопкой мыши на имени баннера и нажмите «добавить в путь сборки». Eclipse создаст «ссылки библиотек» и поместит банку для вас

. Он разрешил импорт банки сразу в программе для меня

0
ответ дан Anandkumar 15 August 2018 в 15:12
поделиться
  • 1
    Это добавит запись в Eclipse .classpath, но ваша сборка maven mvn package будет бросками, когда вы начнете использовать эту зависимость, так как maven не имеет определения ее, и она должна быть только в pom.xml – Paul Verest 25 July 2017 в 15:10

Добавьте свой собственный локальный JAR в файл POM и используйте его в сборке maven.

mvn install:install-file -Dfile=path-to-jar -DgroupId=owngroupid -DartifactId=ownartifactid -Dversion=ownversion -Dpackaging=jar

Например:

mvn install:install-file -Dfile=path-to-jar -DgroupId=com.decompiler -DartifactId=jd-core-java -Dversion=1.2 -Dpackaging=jar

Затем добавьте его в POM следующим образом:

8
ответ дан Aurasphere 15 August 2018 в 15:12
поделиться
  • 1
    Я получаю сообщение об ошибке Не удалось установить артефакт (доступ запрещен). Как я могу это решить? @Aurasphere – Ramzah Rehman 4 August 2017 в 06:35
  • 2
    @RamzahRehman попытается открыть командную строку с привилегиями admi, щелкнув ее правой кнопкой мыши, а затем выбрав & quot; Запуск от имени администратора & quot; – Aurasphere 4 August 2017 в 07:44

В вашем локальном репозитории вы можете установить свою банку, выпустив команды

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

Следуйте этой полезной ссылке , чтобы сделать то же самое с сайта mkyoung. Вы также можете проверить руководство maven для того же

1
ответ дан bpjoshi 15 August 2018 в 15:12
поделиться
  • 1
    Как этот ответ отличается от ранее принятого ответа? – cdock 11 February 2017 в 17:08

Конечно, вы можете добавить банки в эту папку. Но, возможно, это не то, чего вы хотите достичь ...

Если вам нужны эти банки для компиляции, проверьте этот связанный вопрос: Могу ли я добавить банки в maven 2 build classpath без их установки?

Кроме того, прежде чем кто-либо подскажет это, НЕ используйте системную область.

14
ответ дан Community 15 August 2018 в 15:12
поделиться
  • 1
    Окончание с переключением на градус. Это не работает. Если локальная банка определена как зависимости, maven не будет запускать плагины перед разрешением зависимостей, то ручная установка неизбежна. нашел дискомфорт об этой ситуации: stackoverflow.com/questions/5951999/… – xinthink 15 March 2015 в 17:11

Очень быстрый и грязный способ - указать на локальный файл:

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

Однако это будет жить только на вашем компьютере (очевидно), для совместного использования обычно имеет смысл использовать подходящий m2 архив (nexus / artifactory) или если у вас нет ни одного из них или вы не хотите устанавливать локальный структурированный архив maven и настраивать «репозиторий» в вашем pom: local:

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

remote:

<repositories>
    <repository>
        <id>my-remote-repo</id>
        <url>http://192.168.0.1/whatever/mavenserver/youwant/repo</url>
    </repository>
</repositories>
0
ответ дан fl0w 15 August 2018 в 15:12
поделиться

У меня была такая же проблема с ojdbc6. Я видел эту ссылку, но она не работала. Команда была правильной, но мне нужен еще один параметр,

Это ссылка: http://roufid.com/3-ways-to-add-local-jar-to-maven- project /

Вот пример:

install:install-file -Dfile=C:\driversDB\ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar
-1
ответ дан gyan 15 August 2018 в 15:12
поделиться

По какой-то причине, в веб-приложении, которое я обслуживаю, ни решение Alireza Fattahi , ни решение JJ Roman работало правильно. В обоих случаях компиляция идет хорошо (она видит банку), но упаковка не может содержать банку внутри войны.

Единственный способ, которым я смог заставить его работать, - положить банку на /src/main/webapp/WEB-INF/lib/, а затем объединить его с решением Фаттахса или Романа.

1
ответ дан Haroldo_OK 15 August 2018 в 15:12
поделиться

:

mvn install:install-file -Dfile=c:\kaptcha-{version}.jar -DgroupId=com.google.code
-DartifactId=kaptcha -Dversion={version} -Dpackaging=jar
7
ответ дан Hassani 15 August 2018 в 15:12
поделиться

Во-первых, я хотел бы дать ответ на этот ответ анонимному пользователю stackoverflow - я уверен, что видел аналогичный ответ здесь раньше, - но теперь я не могу его найти.

Лучшим вариантом для локальных файлов jar в качестве зависимости является создание локального репозитория maven. Такое репо - это не что иное, как правильная структура каталогов с файлами pom.

В моем примере: у меня есть главный проект в ${master_project} месте, а subroject1 находится на ${master_project}/${subproject1}

, тогда я создаю mvn-репозиторий в: ${master_project}/local-maven-repo

В файле pom в подпроекте1 необходимо указать репозиторий ${master_project}/${subproject1}/pom.xml, который будет использовать путь к файлу в качестве параметра url:

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

Зависимость может быть задана как для любого другого репозитория. Это делает ваш репозиторий pom независимым. Например, если желаемая банка доступна в центральном центре maven, вам просто нужно удалить ее из своего локального репо, и она будет вытащена из репо по умолчанию.

    <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.servicebinder</artifactId>
        <version>0.9.0-SNAPSHOT</version>
    </dependency>

Последнее, но не менее важное: добавить файл jar в локальный репозиторий с помощью переключателя -DlocalRepositoryPath, как здесь:

mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file  \
    -Dfile=/some/path/on/my/local/filesystem/felix/servicebinder/target/org.apache.felix.servicebinder-0.9.0-SNAPSHOT.jar \
    -DgroupId=org.apache.felix -DartifactId=org.apache.felix.servicebinder \
    -Dversion=0.9.0-SNAPSHOT -Dpackaging=jar \
    -DlocalRepositoryPath=${master_project}/local-maven-repo

В одном файле jar установлен такой mvn repo может быть привязан к репозиторию кода, а вся настройка не зависит от системы. ( рабочий пример в github )

Я согласен, что использование JAR для репозитория исходного кода не является хорошей практикой, но в реальной жизни быстрое и грязное решение иногда лучше, чем полная развязка репо, чтобы разместить одну банку, которую вы не можете опубликовать.

82
ответ дан JJ Roman 15 August 2018 в 15:12
поделиться
  • 1
    Локальный относительный каталог как maven repo ... Помог много – sura2k 6 October 2015 в 09:49
  • 2
    Если вы хотите сделать это в pom.xml, проверьте baeldung.com/install-local-jar-with-maven – Kai Wang 18 November 2015 в 20:54
  • 3
    @Kai Wang Это решение работает лучше! вы должны добавить это как ответ. – lockwobr 13 April 2016 в 16:58
  • 4
    Вы должны использовать развертывание и не устанавливать для правильного создания своего репо. – opticyclic 27 April 2016 в 04:34
  • 5
    Вот способ создания локального репо: mvn deploy -DaltDeploymentRepository=releaseRepository::default::file://${project.basedir}/repo – jcadcell 25 April 2017 в 02:32

Это короткий синтаксис для более новых версий:

mvn install:install-file -Dfile=<path-to-file>

Он работает, когда JAR был создан Apache Maven - наиболее распространенным случаем. Затем он будет содержать pom.xml в подпапке каталога META-INF, который будет считаться по умолчанию.

Источник: http://maven.apache.org/guides/ мини / гид-третьи стороны-баночка-local.html

2
ответ дан joro 15 August 2018 в 15:12
поделиться

Обратите внимание, что не обязательно использовать локальное репо. Если этот проект делится с другими, тогда у всех остальных будут проблемы и вопросы, если он не работает, и банка не будет доступна даже в вашей системе управления версиями!

Хотя общее репо - это лучший ответ, если вы не можете сделать это по какой-то причине, тогда встраивание банки лучше, чем локальное репо. Локальное содержимое репо может вызвать множество проблем, особенно с течением времени.

1
ответ дан jwvh 15 August 2018 в 15:12
поделиться
  • 1
    если вы добавите банки в исходную систему управления, библиотеки всегда будут доступны вместе с источником. Нет источника, нет библиотек. С maven вместо этого источник может быть в порядке, но репозиторий недоступен. – sarah.ferguson 9 December 2015 в 15:34
  • 2
    @Frank ... любая идея о том, как создать исполняемый банку, не включая внешние зависимости (файлы библиотеки)? – Satish Karuturi 9 January 2016 в 09:56
  • 3
    Для кого-то нового для maven и поиска ответа на исходный вопрос, что такое «встраивание банки», имею в виду? – cdock 11 February 2017 в 17:09

Также взгляните на ...

<scope>compile</scope>

Зависимости Maven . Это значение по умолчанию, но я обнаружил, что в некоторых случаях явным образом устанавливаю эту область также Maven для поиска локальных библиотек в локальном репозитории.

2
ответ дан kervin 15 August 2018 в 15:12
поделиться

Я хочу поделиться кодом, в котором вы можете загрузить папку с банками. Это полезно, когда у провайдера нет общего репозитория, и вам нужно добавить много библиотек вручную. Я решил построить .bat вместо вызова непосредственно в maven, потому что это могут быть ошибки из памяти. Он был подготовлен для среды Windows, но легко адаптировать его к ОС Linux:

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.jar.Attributes;
import java.util.jar.JarFile;
import java.util.jar.Manifest;

public class CreateMavenRepoApp {

    private static final String OCB_PLUGIN_FOLDER = "C://your_folder_with_jars";

    public static void main(String[] args) throws IOException {

    File directory = new File();
    //get all the files from a directory
    PrintWriter writer = new PrintWriter("update_repo_maven.bat", "UTF-8");
    writer.println("rem "+ new Date());  
    File[] fList = directory.listFiles();
    for (File file : fList){
        if (file.isFile()){               
        String absolutePath = file.getAbsolutePath() ;
        Manifest  m = new JarFile(absolutePath).getManifest();
        Attributes attributes = m.getMainAttributes();
        String symbolicName = attributes.getValue("Bundle-SymbolicName");

        if(symbolicName!=null &&symbolicName.contains("com.yourCompany.yourProject")) {
            String[] parts =symbolicName.split("\\.");
            String artifactId = parts[parts.length-1];
            String groupId = symbolicName.substring(0,symbolicName.length()-artifactId.length()-1);
            String version = attributes.getValue("Bundle-Version");
            String mavenLine= "call mvn org.apache.maven.plugins:maven-install-plugin:2.5.1:install-file -Dfile="+ absolutePath+" -DgroupId="+ groupId+" -DartifactId="+ artifactId+" -Dversion="+ version+" -Dpackaging=jar ";
            writer.println(mavenLine);          
        }

        }
    }
    writer.close();
    }

}

После запуска этой основной из любой IDE запустите update_repo_maven.bat.

3
ответ дан Luis Muzikant 15 August 2018 в 15:12
поделиться
  • 1
    Ваш код String symbolicName = attributes.getValue("Bundle-SymbolicName"); if(symbolicName!=null &&symbolicName.contains("com.yourCompany.yourProject")), по-видимому, указывает, что будут поддерживаться только custom . Это не то, что нам нужно: вместо этого куча сторонних банках. У вас есть предложения по установке any jar таким образом? – javadba 27 November 2016 в 21:03
  • 2
    У меня есть исправленный ваш код: я поставил ответ внизу. – javadba 27 November 2016 в 21:08

Еще один интересный случай - когда вы хотите иметь в своем проекте частные банки maven. Возможно, вы захотите сохранить возможности Maven для разрешения транзитивных зависимостей.

  1. Создайте папки в вашем проекте
  2. Добавьте следующие строки в свой файл pom.xml
    <properties><local.repository.folder>${pom.basedir}/libs/</local.repository.folder>
    </properties>
    
    <repositories>
       <repository>
            <id>local-maven-repository</id>
            <url>file://${local.repository.folder}</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
       </repository>
    </repositories>
    
  3. Откройте папку .m2 / repository и скопируйте структуру каталогов проекта, который вы хотите импортировать, в папку libs.

Например. предположим, что вы хотите импортировать зависимость

<dependency>
    <groupId>com.mycompany.myproject</groupId>
    <artifactId>myproject</artifactId>
    <version>1.2.3</version>
</dependency>

Просто запустите .m2 / repository, и вы увидите следующую папку

com / mycompany / myproject / 1.2.3

Скопируйте все в папку libs (опять же, включая папки в .m2 / repository), и все готово.

4
ответ дан Nic Cottrell 15 August 2018 в 15:12
поделиться

У меня была такая же ошибка для набора зависимостей в моем pom.xml, что версии зависимостей не были указаны в pom.xml и упоминались в родительском репозитории. По какой-то причине сведения о версии не синхронизировались с этим репо. Следовательно, я вручную ввел версии с использованием тега, и он работал как шарм. Немного времени, необходимого для поиска версий в родительском и укажите здесь. Но это можно сделать только для банок, которые показывают артефактную ошибку, и это работает. Надеюсь, это кому-то поможет.

0
ответ дан Ranjan Rozario 15 August 2018 в 15:12
поделиться

Предпочтительным способом было бы создать собственный удаленный репозиторий.

Подробнее о том, как это сделать, см. здесь здесь . Посмотрите раздел «Загрузка в удаленный репозиторий».

4
ответ дан Simeon 15 August 2018 в 15:12
поделиться

Я хотел бы такое решение - использовать maven-install-plugin в файле pom:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.2</version>
            <executions>
                <execution>
                    <phase>initialize</phase>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                    <configuration>
                        <file>lib/yourJar.jar</file>
                        <groupId>com.somegroup.id</groupId>
                        <artifactId>artefact-id</artifactId>
                        <version>x.y.z</version>
                        <packaging>jar</packaging>
                    </configuration>
                </execution>
            </executions>
        </plugin>

В этом случае вы можете выполнить mvn initialize, а jar будет установлен в локальном репозитории maven. Теперь эта банка доступна во время любого шага maven на этом компьютере (не забудьте включить эту зависимость как любую другую зависимость maven в pom с тегом <dependency></dependency>). Также возможно привязать установку jar к шагу initialize, но любой другой шаг, который вам нравится.

20
ответ дан sphinks 15 August 2018 в 15:12
поделиться
  • 1
    Это хорошо работает для меня, но только если я запускаю mvn initialize перед mvn package: я не могу mvn initialize package, иначе он пытается загрузить JAR из центрального репо. Почему это? Я думал, что это приведет к этим целям / фазам в порядке. – DavidS 17 January 2017 в 21:31
  • 2
    Фактически, их следует запускать в порядке. Взгляните на список жизненного цикла по умолчанию: maven.apache.org/guides/introduction/… Вы можете использовать другой шаг для привязки. – sphinks 18 January 2017 в 07:47
  • 3
    Я пробовал каждый метод, но в конце концов мне пришлось прибегнуть к этому решению. Основная причина в том, что я хотел иметь возможность локально создавать пакеты в автономном режиме. Если я объявлял его зависимым от локально определенного репозитория, это всегда считалось просто еще одним онлайн-репо, и сборка maven жаловалась на то, что не штрафует артефакт. Это решение отлично подходит для каждого случая. – Mauli 4 December 2017 в 12:27
  • 4
    Я думаю, лучше использовать чистую фазу , потому что инициализация будет выполняться каждый раз, когда мы используем mvn-пакет, когда это не нужно. Наконец, если нам нужно только создать jar / war, мы можем использовать непосредственно mvn clean package . – Deoxyseia 3 February 2018 в 01:07
  • 5
    & quot; Также возможно связать установку jar, чтобы не инициализировать шаг, а любой другой шаг, который вам нравится. & quot; не обязательно верно. Если зависимость еще не находится в репо, и используется фаза, которая возникает после фазы, которая разрешает зависимости (например, compile), сборка завершится неудачей. – Gerold Broser 7 February 2018 в 20:41

Я думаю, что лучшим решением этой проблемы является использование maven-install-plugin для автоматической установки файлов во время установки. Вот как я настроил его для своего проекта.

Сначала добавьте путь (где вы храните локальные .jars) как свойство.

<properties>
    <local.sdk>/path/to/jar</local.sdk>
</properties>

Затем в разделе plugins добавьте плагин для установки банок при компиляции .

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
    <executions>
        <execution>
            <id>1</id>
            <phase>initialize</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <groupId>com.local.jar</groupId> 
                <artifactId>appengine-api</artifactId>
                <version>1.0</version>
                <packaging>jar</packaging>
                <file>${local.sdk}/lib/impl/appengine-api.jar</file>
            </configuration>
        </execution>
        <execution>
            <id>appengine-api-stubs</id>
            <phase>initialize</phase>
            <goals>
                <goal>install-file</goal>
            </goals>
            <configuration>
                <groupId>com.local.jar</groupId>
                <artifactId>appengine-api-stubs</artifactId>
                <version>1.0</version>
                <packaging>jar</packaging>
                <file>${local.sdk}/lib/impl/appengine-api-stubs.jar</file>
            </configuration>
        </execution>
    </executions>
</plugin>

Наконец, в зависимостях вы можете добавить jars

<dependency>
    <groupId>com.local.jar</groupId>
    <artifactId>appengine-api</artifactId>
    <version>1.0</version>
</dependency>

<dependency>
    <groupId>com.local.jar</groupId>
    <artifactId>appengine-api-stubs</artifactId>
    <version>1.0</version>
    <scope>test</scope>
</dependency>

. Создав свой проект таким образом, проект будет продолжать строить, даже когда вы его берете на другой компьютер (учитывая, что он имеет все файлы jar в пути, указанном свойством local.sdk).

Для groupId используйте уникальное имя, чтобы убедиться, что конфликтов нет.

Теперь, когда ваши mvn install или mvn test локальные банки будут добавлены автоматически.

0
ответ дан Sudara 15 August 2018 в 15:12
поделиться

Создайте новую папку, скажем, local-maven-repo в корне вашего проекта Maven.

Просто добавьте локальное репо внутри вашего <project> вашего pom.xml:

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

Затем для каждой внешней банки, которую вы хотите установить, зайдите в корень вашего проекта и выполните:

mvn deploy:deploy-file -DgroupId=[GROUP] -DartifactId=[ARTIFACT] -Dversion=[VERS] -Durl=file:./local-maven-repo/ -DrepositoryId=local-maven-repo -DupdateReleaseInfo=true -Dfile=[FILE_PATH]
76
ответ дан VinayVeluri 15 August 2018 в 15:12
поделиться
  • 1
    Это единственный правильный ответ здесь, так как он правильно создаст ваше репо при использовании развертывания. – opticyclic 27 April 2016 в 04:33
  • 2
    Это работает намного лучше, чем принятый ответ, потому что это не испортит пакет mvn – Xeli 21 March 2017 в 15:28
  • 3
    Будет ли этот подход работать, если код будет развернут с использованием сервера сборки CI? Похоже, что автоматические сборки не имеют доступа к зависимости. – Wallace Howery 8 March 2018 в 23:13
  • 4
    @ user2748659 да, если на ваших серверах сборки CI папка local-maven-repo включена (как ребенок в этом примере) в исходную папку – Anthony O. 9 March 2018 в 16:15
  • 5
    Этот ответ - это то, что сработало для меня. Для совместного проекта, имеющего репо в каталоге проекта и добавляемого к управлению версиями, убедитесь, что у любого, кто проверяет проект, не будет отсутствовать зависимостей. Если у вас много зависимостей, то совместное удаленное репо, вероятно, является лучшим решением, в противном случае сохранение репо в каталоге проекта будет прекрасным. – Aquarelle 5 May 2018 в 04:32
<dependency>
    <groupId>group id name</groupId>
    <artifactId>artifact name</artifactId>
    <version>version number</version>
    <scope>system</scope>
    <systemPath>jar location</systemPath>
</dependency>
24
ответ дан YCF_L 15 August 2018 в 15:12
поделиться
14
ответ дан Community 5 September 2018 в 14:18
поделиться
0
ответ дан Kavindu Gayan 5 September 2018 в 14:18
поделиться
14
ответ дан Community 28 October 2018 в 22:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: