Maven, как добавить Git repos как зависимость [дубликат]

Порядок, в котором указаны взаимозависимые связанные библиотеки, неверен.

Порядок, в котором связаны библиотеки, имеет значение, если библиотеки зависят друг от друга. В общем случае, если библиотека A зависит от библиотеки B, тогда libA ДОЛЖЕН появляться перед libB в флагах компоновщика.

Например:

// B.h
#ifndef B_H
#define B_H

struct B {
    B(int);
    int x;
};

#endif

// B.cpp
#include "B.h"
B::B(int xx) : x(xx) {}

// A.h
#include "B.h"

struct A {
    A(int x);
    B b;
};

// A.cpp
#include "A.h"

A::A(int x) : b(x) {}

// main.cpp
#include "A.h"

int main() {
    A a(5);
    return 0;
};

Создайте библиотеки:

$ g++ -c A.cpp
$ g++ -c B.cpp
$ ar rvs libA.a A.o 
ar: creating libA.a
a - A.o
$ ar rvs libB.a B.o 
ar: creating libB.a
a - B.o

Скомпилируйте:

$ g++ main.cpp -L. -lB -lA
./libA.a(A.o): In function `A::A(int)':
A.cpp:(.text+0x1c): undefined reference to `B::B(int)'
collect2: error: ld returned 1 exit status
$ g++ main.cpp -L. -lA -lB
$ ./a.out

Чтобы повторить снова, порядок имеет значение!

60
задан Infinite Recursion 23 November 2013 в 13:18
поделиться

3 ответа

Теперь вы можете импортировать библиотеку Java из репо GitHub с помощью JitPack . В вашем pom.xml:

  1. Добавить репозиторий:
<repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
</repository>
  1. Добавить зависимость
<dependency>
    <groupId>com.github.User</groupId>
    <artifactId>Repo name</artifactId>
    <version>Release tag</version>
</dependency>

Это работает, потому что JitPack проверит код и построит его. Таким образом, вы в конечном итоге загрузите банку. Если проект не имеет выпуска GitHub, тогда его можно использовать идентификатор фиксации в качестве версии.

97
ответ дан Andrejs 28 August 2018 в 01:37
поделиться

На данный момент вы не можете сделать это, если разработчик библиотеки не предоставил способ сделать это.

Итак, на титульной странице библиотеки должна быть инструкция, содержащая репозиторий адрес:

<repositories>
    <repository>
        <id>YOUR-PROJECT-NAME-mvn-repo</id>
        <url>https://raw.github.com/YOUR-USERNAME/YOUR-PROJECT-NAME/mvn-repo/</url>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
        </snapshots>
    </repository>
</repositories>

И имя зависимостей:

<dependency>
     <groupId>...</groupId>
     <artifactId>...</artifactId>
     <version>...</version>
</dependency>

Это означает, что в этом репо будет поиск всех артефактов вашего проекта, включая вашу зависимость.

Вы также можете взглянуть на pom.xml, чтобы проверить, были ли предприняты попытки развернуть артефакты для удаленного репо. Обычно ключевыми словами являются oss.sonatype.org или raw.github.com , как в этом случае.

FYI, вот способ предоставить репо для вашего артефакта gihub: Хостинг репозитория Maven на github .

16
ответ дан Community 28 August 2018 в 01:37
поделиться

Еще одна очень приятная вещь о Jitpack , у нее есть кнопка поиска на главной странице. И если вы наберете URL своего репозитория GitHub, он отобразит различные коммиты исходного кода, и вы можете выбрать, какой фиксатор / тег вы хотите. Jitpack создает зависимости pom для вас.

Он стал мертвым простым.

0
ответ дан Memin 28 August 2018 в 01:37
поделиться
Другие вопросы по тегам:

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