내 프로젝트의 라이브러리 소스에 직접 로컬 jar 파일(아직 Maven 저장소의 일부가 아님)을 추가하려면 어떻게 해야 합니까?
질문자 :Praneel PIDIKITI
다음과 같이 로컬 종속성을 직접 추가할 수 있습니다( 소유 라이브러리가 포함된 빌드 maven 프로젝트 에서 언급됨).
<dependency> <groupId>com.sample</groupId> <artifactId>sample</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${project.basedir}/src/main/resources/Name_Your_JAR.jar</systemPath> </dependency>
업데이트
새 릴리스에서 이 기능은 더 이상 사용되지 않는 것으로 표시되지만 여전히 작동하고 아직 제거되지 않았습니다(maven 시작 중에 로그에 경고가 표시됨). 이 https://issues.apache.org/jira/browse/MNG-6523 에 대해 maven 그룹에서 문제가 발생했습니다(이 기능이 일부 경우에 도움이 되는 이유를 설명하고 참여할 수 있습니다). 이 기능이 남아 있기를 바랍니다!
기능이 제거되지 않는 한 이것을 사용하여 저장소에 맞지 않는 내 프로젝트의 하나의 못된 jar 파일에만 종속성을 만듭니다. 이 기능이 제거되면 나중에 선택할 수 있는 좋은 답변이 많이 있습니다!
Alireza Fattahi
다음과 같이 JAR을 로컬 Maven 저장소(일반적으로 .m2
)에 설치합니다.
mvn install:install-file \ -Dfile=<path-to-file> \ -DgroupId=<group-id> \ -DartifactId=<artifact-id> \ -Dversion=<version> \ -Dpackaging=<packaging> \ -DgeneratePom=true
각각은 다음을 참조합니다.
<path-to-file>
: 로드할 파일의 경로 eg → c:\kaptcha-2.3.jar
<group-id>
: 파일을 등록해야 하는 그룹 eg → com.google.code
<artifact-id>
: 파일의 아티팩트 이름 eg → kaptcha
<version>
: 파일의 버전 예: → 2.3
<packaging>
: 파일의 패키징 eg → jar
참조
- Maven FAQ: 로컬 저장소에 넣고 싶은 jar가 있습니다. 어떻게 복사할 수 있습니까?
- Maven 설치 플러그인 사용법:
install:install-file
목표
user373455
첫째, 익명의 스택 오버플로 사용자에게 이 답변에 대한 크레딧을 제공하고 싶습니다. 이전에 비슷한 답변을 본 적이 있지만 지금은 찾을 수 없습니다.
로컬 JAR 파일을 종속성으로 사용하는 가장 좋은 방법은 로컬 Maven 저장소를 만드는 것입니다. 그러한 저장소는 pom 파일이 있는 적절한 디렉토리 구조에 불과합니다.
${master_project}
위치에 마스터 프로젝트가 있고 subproject1은 ${master_project}/${subproject1}
있습니다.
${master_project}/local-maven-repo
Maven 저장소를 만듭니다.
${master_project}/${subproject1}/pom.xml
에 있는 subproject1의 pom 파일에서 파일 경로를 URL 매개변수로 사용하는 저장소를 지정해야 합니다.
<repositories> <repository> <id>local-maven-repo</id> <url>file:///${project.parent.basedir}/local-maven-repo</url> </repository> </repositories>
종속성은 다른 저장소에 대해 지정할 수 있습니다. 이것은 pom 저장소를 독립적으로 만듭니다. 예를 들어, Maven 중앙에서 원하는 JAR을 사용할 수 있게 되면 로컬 리포지토리에서 삭제하기만 하면 기본 리포지토리에서 가져옵니다.
<dependency> <groupId>org.apache.felix</groupId> <artifactId>org.apache.felix.servicebinder</artifactId> <version>0.9.0-SNAPSHOT</version> </dependency>
마지막으로 해야 할 일은 다음과 같이 -DlocalRepositoryPath 스위치를 사용하여 JAR 파일을 로컬 저장소에 추가하는 것입니다.
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 파일이 설치되면 Maven 저장소를 코드 저장소에 커밋할 수 있으며 전체 설정은 시스템에 독립적입니다. ( GitHub의 작업 예제 ).
소스 코드 리포지토리에 JAR을 커밋하는 것은 좋은 방법이 아니라는 데 동의하지만, 실제로는 게시할 수 없는 하나의 JAR을 호스팅하는 완전한 Nexus 리포지토리보다 빠르고 더러운 솔루션이 더 나은 경우가 있습니다.
JJ Roman
Maven 프로젝트의 루트에 local-maven-repo
라고 가정해 보겠습니다.
pom.xml
<project>
안에 로컬 저장소를 추가하기만 하면 됩니다.
<repositories> <repository> <id>local-maven-repo</id> <url>file:///${project.basedir}/local-maven-repo</url> </repository> </repositories>
그런 다음 설치하려는 각 외부 jar에 대해 프로젝트 루트로 이동하여 다음을 실행합니다.
mvn deploy:deploy-file -DgroupId=[GROUP] -DartifactId=[ARTIFACT] -Dversion=[VERS] -Durl=file:./local-maven-repo/ -DrepositoryId=local-maven-repo -DupdateReleaseInfo=true -Dfile=[FILE_PATH]
Anthony O.
그러한 솔루션을 원합니다 - maven-install-plugin
을 사용하십시오.
<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>xyz</version> <packaging>jar</packaging> </configuration> </execution> </executions> </plugin>
mvn initialize
수행할 수 있으며 jar는 로컬 maven repo에 설치됩니다. 이제 이 jar는 이 머신의 모든 maven 단계에서 사용할 수 있습니다(이 종속성을 <dependency></dependency>
태그가 있는 pom의 다른 maven 종속성으로 포함하는 것을 잊지 마십시오). initialize
하지 않고 원하는 다른 단계를 초기화하기 위해 jar 설치를 바인딩하는 것도 가능합니다.
sphinks
<dependency> <groupId>group id name</groupId> <artifactId>artifact name</artifactId> <version>version number</version> <scope>system</scope> <systemPath>jar location</systemPath> </dependency>
ROOT
정말 빠르고 더러운 방법은 로컬 파일을 가리키는 것입니다.
<dependency> <groupId>com.sample</groupId> <artifactId>samplifact</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>C:\DEV\myfunnylib\yourJar.jar</systemPath> </dependency>
그러나 이것은 (분명히) 당신의 머신에만 있을 것입니다. 공유를 위해서는 일반적으로 적절한 m2 아카이브(nexus/artifactory)를 사용하는 것이 합리적이거나 이러한 아카이브가 없거나 로컬 메이븐을 설정하고 싶지 않은 경우 구조화된 아카이브를 만들고 pom에 "리포지토리"를 구성합니다.
현지의:
<repositories> <repository> <id>my-local-repo</id> <url>file://C:/DEV//mymvnrepo</url> </repository> </repositories>
원격:
<repositories> <repository> <id>my-remote-repo</id> <url>http://192.168.0.1/whatever/mavenserver/youwant/repo</url> </repository> </repositories>
이를 위해 basedir 변수를 사용하여 상대 경로도 가능합니다.
<url>file:${basedir}</url>
fl0w
종속성의 중요한 부분은 다음과 같습니다. ${pom.basedir} (${basedir} 대신)
<dependency> <groupId>org.example</groupId> <artifactId>example</artifactId> <version>1.0</version> <scope>system</scope> <systemPath>${pom.basedir}/src/lib/example.jar</systemPath> </dependency>
kolle_86
POM 파일에 자신의 로컬 JAR을 추가하고 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에 추가합니다.
Tummidi Phani Kumar
한 가지 방법은 자신의 Maven 저장소 관리자(예: Nexus)에 업로드하는 것입니다. 어쨌든 자체 저장소 관리자를 갖는 것이 좋습니다.
내가 최근에 본 또 다른 좋은 방법은 빌드 수명 주기에 Maven 설치 플러그인을 포함하는 것입니다. 로컬 저장소에 파일을 설치하기 위해 POM에서 선언합니다. 약간의 오버헤드가 있으며 수동 단계가 필요하지 않습니다.
http://maven.apache.org/plugins/maven-install-plugin/install-file-mojo.html
Puce
물론 해당 폴더에 jar를 추가할 수 있습니다. 그러나 아마도 당신이 달성하고자하는 것이 아닐 수도 있습니다 ...
컴파일을 위해 이러한 항아리가 필요한 경우 관련 질문을 확인 하십시오. 항아리를 설치하지 않고 maven 2 빌드 클래스 경로에 추가할 수 있습니까?
또한 누군가가 제안하기 전에 시스템 범위를 사용하지 마십시오.
Cephalopod
또 다른 흥미로운 경우는 프로젝트에 개인 maven jar를 포함하려는 경우입니다. 전이 종속성을 해결하기 위해 Maven의 기능을 유지하고 싶을 수 있습니다. 솔루션은 상당히 쉽습니다.
- 프로젝트에 libs 폴더 만들기
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>
.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 아래의 폴더 포함)을 복사하면 완료됩니다.
JeanValjean
1단계: pom.xml
의 목표 install-file
로 maven-install-plugin
구성
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <executions> <execution> <id>install-external-non-maven-jar-MWS-Client-into-local-maven-repo</id> <phase>clean</phase> <configuration> <repositoryLayout>default</repositoryLayout> <groupId>com.amazonservices.mws</groupId> <artifactId>mws-client</artifactId> <version>1.0</version> <file>${project.basedir}/lib/MWSClientJavaRuntime-1.0.jar</file> <packaging>jar</packaging> <generatePom>true</generatePom> </configuration> <goals> <goal>install-file</goal> </goals> </execution> </executions> </plugin>
file
경로를 기반으로 파일 경로를 편집해야 합니다(이러한 외부 비-maven jar를 일부 폴더, 예를 들어 lib
라고 가정해 보겠습니다. 이 lib
폴더를 프로젝트 내부에 배치하여 프로젝트별 상대 경로 및 시스템 특정 절대 경로를 추가하지 마십시오.
외부 jar가 여러 개인 경우 maven-install-plugin
내의 다른 jar에 대해 <execution>
을 반복하십시오.
2단계: 위에 표시된 대로 pom.xml
maven-install-plugin
을 구성했으면 평소와 같이 pom.xml
에서 이러한 jar를 사용해야 합니다.
<dependency> <groupId>com.amazonservices.mws</groupId> <artifactId>mws-client</artifactId> <version>1.0</version> </dependency>
maven-install-plugin
은 외부 jar만 로컬 .m2
maven 저장소에 복사합니다. 그게 다야 이러한 jar를 프로젝트에 대한 maven 종속성으로 자동으로 포함하지 않습니다.
사소하지만 때로는 놓치기 쉬운 포인트입니다.
Yatendra
명령줄:
mvn install:install-file -Dfile=c:\kaptcha-{version}.jar -DgroupId=com.google.code -DartifactId=kaptcha -Dversion={version} -Dpackaging=jar
Hassani
이 문제에 대한 더 나은 해결책은 maven-install-plugin 을 사용하여 설치 시 파일을 자동으로 설치하는 것입니다. 이것이 내가 내 프로젝트를 위해 설정한 방법입니다.
먼저 경로(로컬 .jars를 저장하는 위치)를 속성으로 추가합니다.
<properties> <local.sdk>/path/to/jar</local.sdk> </properties>
그런 다음 plugins
추가하여 컴파일할 때 jar를 설치합니다.
<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>
마지막으로 종속성에서 jar를 추가할 수 있습니다.
<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>
이와 같이 프로젝트를 설정하면 다른 컴퓨터로 가져갈 때에도 프로젝트가 계속 빌드됩니다( local.sdk
속성에 지정된 경로에 모든 jar 파일이 있는 경우).
groupId
경우 충돌이 없는지 확인하기 위해 고유한 이름을 사용합니다.
이제 mvn install
또는 mvn test
로컬 jar가 자동으로 추가됩니다.
Sudara
Maven 프로젝트에 로컬 jar
라이브러리, 해당 sources
및 javadoc
라이브러리, 해당 sources
및 javadoc
이 포함된 사전 컴파일된 jar
파일이 있는 경우 다음과 같이 로컬 Maven 저장소에 install
mvn 설치:설치 파일 -Dfile=awesomeapp-1.0.1.jar \ -DpomFile=awesomeapp-1.0.1.pom \ -Dsources=awesomeapp-1.0.1-sources.jar \ -Djavadoc=awesomeapp-1.0.1-javadoc.jar \ -DgroupId=com.example \ -DartifactId=awesomeapp \ -D버전=1.0.1 \ -Dpackaging=jar
그런 다음 프로젝트에서 다음 라이브러리를 사용할 수 있습니다.
<!-- com.example --> <dependency> <groupId>com.example</groupId> <artifactId>awesomeapp</artifactId> <version>1.0.1</version> </dependency>
참조: maven-install-plugin 사용법.
또는 maven-source-plugin 및 maven-javadoc-plugin 을 사용하여 sources
및 javadoc
이러한 라이브러리를 직접 build
한 다음 install
수 있습니다.
예제 프로젝트: 라이브러리
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <url>https://example.com/awesomeapp</url> <groupId>com.example</groupId> <artifactId>awesomeapp</artifactId> <name>awesomeapp</name> <version>1.0.1</version> <packaging>jar</packaging> <properties> <java.version>12</java.version> </properties> <build> <finalName>awesomeapp</finalName> <defaultGoal>install</defaultGoal> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <inherited>true</inherited> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.2.1</version> <executions> <execution> <id>attach-sources</id> <goals><goal>jar</goal></goals> </execution> </executions> </plugin> <plugin> <inherited>true</inherited> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.2.0</version> <executions> <execution> <id>attach-javadocs</id> <goals><goal>jar</goal></goals> </execution> </executions> </plugin> </plugins> </build> </project>
maven install
목표 실행:
mvn install
로컬 Maven 저장소를 확인하십시오.
~/.m2/repository/com/example/awesomeapp/1.0.1/ ├─ _remote.repositories ├─ awesomeapp-1.0.1.jar ├─ awesomeapp-1.0.1.pom ├─ awesomeapp-1.0.1-javadoc.jar └─ awesomeapp-1.0.1-sources.jar
그런 다음이 라이브러리를 사용할 수 있습니다.
<!-- com.example --> <dependency> <groupId>com.example</groupId> <artifactId>awesomeapp</artifactId> <version>1.0.1</version> </dependency>
user11141611
다음은 최신 버전에 대한 짧은 구문입니다.
mvn install:install-file -Dfile=<path-to-file>
가장 일반적인 경우인 Apache Maven에서 JAR을 빌드할 때 작동합니다. 그러면 META-INF 디렉토리의 하위 폴더에 pom.xml이 포함되며 기본적으로 읽힙니다.
출처: http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
joro
선호하는 방법은 자신의 원격 저장소를 만드는 것입니다.
자세한 방법 은 여기를 참조하세요. ' 원격 저장소에 업로드 ' 섹션을 살펴보십시오.
Simeon
항아리로 가득 찬 폴더를 업로드할 수 있는 코드를 공유하고 싶습니다. 공급자에 공용 저장소가 없고 많은 라이브러리를 수동으로 추가해야 하는 경우에 유용합니다. 메모리 부족 오류일 수 있기 때문에 maven을 직접 호출하는 대신 .bat를 빌드하기로 결정했습니다. Windows 환경을 위해 준비되었지만 Linux OS에 쉽게 적용할 수 있습니다.
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를 실행하십시오.
Luis Muzikant
또한 살펴보십시오 ...
<scope>compile</scope>
메이븐 종속성 . 이것은 기본값이지만 어떤 경우에는 명시적으로 해당 범위를 Maven으로 설정하여 로컬 저장소에서 로컬 라이브러리를 찾는 것을 발견했습니다.
kervin
타사 jar를 설치하려면 다음과 같이 명령을 호출하십시오.
mvn install:install-file -DgroupId= -DartifactId= -Dversion= -Dpackaging=jar -Dfile=path
Ravikiran Reddy Kotapati
어떤 이유로 유지 관리를 제공하는 웹 응용 프로그램에서 Alireza Fattahi의 솔루션 도 JJ Roman의 솔루션도 제대로 작동하지 않았습니다. 두 경우 모두 컴파일은 정상적으로 진행되지만(jar가 표시됨) 패키징은 전쟁 내부에 jar를 포함하지 못합니다.
내가 작동하도록 관리한 유일한 방법은 jar를 /src/main/webapp/WEB-INF/lib/
에 넣은 다음 Fattahis 또는 Roman의 솔루션과 결합하는 것입니다.
Haroldo_OK
로컬 리포지토리를 사용하는 것이 반드시 좋은 생각은 아닙니다. 이 프로젝트를 다른 사람들과 공유하면 다른 모든 사람들이 문제와 질문을 하고 작동하지 않을 때 소스 제어 시스템에서도 jar를 사용할 수 없습니다!
공유 리포지토리가 가장 좋은 답변이지만 어떤 이유로 이 작업을 수행할 수 없다면 jar를 포함하는 것이 로컬 리포지토리보다 낫습니다. 로컬 전용 repo 콘텐츠는 특히 시간이 지남에 따라 많은 문제를 일으킬 수 있습니다.
Frank
로컬 저장소에서 명령을 실행하여 jar를 설치할 수 있습니다.
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> \ -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
이 유용한 링크 를 따라 mkyoung의 웹사이트에서 동일한 작업을 수행하십시오. 동일한 maven 가이드를 확인할 수도 있습니다.
bpjoshi
- mvn 설치
명령줄에서 아래 코드를 작성하거나 Eclipse 내장 maven을 사용하는 경우 프로젝트를 마우스 오른쪽 버튼으로 클릭 -> 다른 계정으로 실행 -> 구성 실행... -> 왼쪽 패널에서 Maven 빌드를 마우스 오른쪽 버튼으로 클릭 -> 새 구성 -> 다음을 작성할 수 있습니다. 목표 및 기본 디렉토리의 코드 :${project_loc:NameOfYourProject} -> 실행
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging> -DgeneratePom=true
각각은 다음을 참조합니다.
< path-to-file >: 로드할 파일의 경로 eg -> c:\kaptcha-2.3.jar
< group-id >: 파일이 등록되어야 하는 그룹 eg -> com.google.code
< artifact-id >: 파일의 아티팩트 이름 eg -> kaptcha
< 버전 >: 파일 버전(예: -> 2.3)
< 포장 >: 파일의 포장 eg -> jar
2.설치 후 pom.xml에 jar를 선언하면 됩니다.
<dependency> <groupId>com.google.code</groupId> <artifactId>kaptcha</artifactId> <version>2.3</version> </dependency>
Mazen Embaby
아마도 누군가가 관심을 가질 것입니다: https://github.com/Limraj/maven-artifact-generator
로컬 저장소에서 maven 아티팩트를 생성하고 jar 경로를 기반으로 pom.xml에 대한 종속성을 구성하는 콘솔 프로그램. 하나의 파일에 대해 이 작업을 수행할 수 있지만 여러 jar 파일이 있는 경우 가장 유용합니다.
경로 항아리: java -jar maven-artifact-generator-XXXjar -p path_to_jars -g com.test -V 1.2.3 -P jar
jar: java -jar maven-artifact-generator-XXXjar -f file_jar -g com.test -V 1.2.3 -P jar
이것은 로컬 maven 저장소에 아티팩트를 생성하고 gen.log에서 pom.xml에 대한 종속성을 생성합니다. ArtifactId는 jar 파일의 이름입니다.
설치된 maven이 필요합니다. widnows 7 및 macOS X(unix/linux)에서 테스트.
Kamil Tomasz Jarmusik
내 pom.xml의 종속성 세트에 대해 동일한 오류가 발생했는데 종속성 버전이 pom.xml에 지정되지 않았고 상위 리포지토리에서 언급된 것으로 나타났습니다. 어떤 이유로 버전 세부 정보가 이 저장소와 동기화되지 않았습니다. 따라서 태그를 사용하여 수동으로 버전을 입력했고 매력처럼 작동했습니다. 부모에서 버전을 찾고 여기에서 지정하는 데 약간의 시간이 필요합니다. 그러나 이것은 아티팩트 ID 오류를 표시하는 항아리에 대해서만 수행할 수 있으며 작동합니다. 이것이 누군가를 돕기를 바랍니다.
Ranjan Rozario
Apache Maven 3.5.4에서는 큰따옴표를 추가해야 했습니다. 큰 따옴표가 없으면 저에게 효과가 없었습니다.
예: mvn install:install-file "-Dfile=jar 파일의 위치" "-DgroupId=group id" "-DartifactId=artifact id" "-Dversion=version" "-Dpackaging=패키지 유형"
Kavindu Gayan
- 로컬 Maven 저장소 디렉터리를 만듭니다. 프로젝트 루트는 다음과 같이 시작해야 합니다.
yourproject +- pom.xml +- src
- 그룹 com.example 및 버전 1.0에 대해 repo라는 표준 Maven 저장소 디렉토리를 추가하십시오.
yourproject +- pom.xml +- src +- repo
- 리포지토리에 아티팩트 배포, Maven은 mvn deploy:deploy-file 목표를 사용하여 아티팩트를 배포할 수 있습니다.
mvn deploy:deploy-file -Durl=file:///pathtoyour/repo -Dfile=your.jar -DgroupId=your.group.id -DartifactId=yourid -Dpackaging=jar -Dversion=1.0
- 프로젝트가 로컬 repo에서 maven 빌드 중에 jar를 찾을 수 있도록 jar에 해당하는 pom 파일을 설치하십시오.
mvn install:install-file -Dfile=/path-to-your-jar-1.0.jar -DpomFile=/path-to-your-pom-1.0.pom
- pom 파일에 repo를 추가하십시오.
<repositories> <!--other repositories if any--> <repository> <id>project.local</id> <name>project</name> <url>file:${project.basedir}/repo</url> </repository> </repositories>
- pom에 종속성을 추가하십시오.
<dependency> <groupId>com.groupid</groupId> <artifactId>myid</artifactId> <version>1.0</version> </dependency>
Dean Jain
원래 질문에 대한 답변은 아니지만 누군가에게 유용할 수 있습니다.
Maven을 사용하여 폴더에서 여러 jar 라이브러리를 추가하는 적절한 방법이 없습니다. 종속성이 거의 없는 경우 위의 답변에서 언급한 대로 maven-install-plugin
을 구성하는 것이 더 쉬울 수 있습니다.
그러나 내 특별한 경우에는 lib
폴더가 있었는데 어떻게든 추가해야 했습니다. Maven
프로젝트를 Gradle
로 변환하는 것이 훨씬 쉬웠습니다.
plugins { id 'org.springframework.boot' version '2.2.2.RELEASE' id 'io.spring.dependency-management' version '1.0.8.RELEASE' id 'java' } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' repositories { mavenCentral() flatDir { dirs 'libs' // local libs folder } } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } implementation 'io.grpc:grpc-netty-shaded:1.29.0' implementation 'io.grpc:grpc-protobuf:1.29.0' implementation 'io.grpc:grpc-stub:1.29.0' // dependecies from maven central implementation name: 'akka-actor_2.12-2.6.1' // dependecies from lib folder implementation name: 'akka-protobuf-v3_2.12-2.6.1' implementation name: 'akka-stream_2.12-2.6.1' }
Anton
출처 : http:www.stackoverflow.com/questions/4955635/how-to-add-local-jar-files-to-a-maven-project
'etc. > StackOverFlow' 카테고리의 다른 글
git commit을 삭제하지만 변경 사항을 유지할 수 있습니까? (0) | 2022.03.22 |
---|---|
배열에 값이 포함되어 있는지 확인 [중복] (0) | 2022.03.22 |
여러 열로 데이터 프레임을 정렬하는 방법 (0) | 2022.03.22 |
함수가 실행되는 데 걸리는 시간을 측정하는 방법 (0) | 2022.03.22 |
이전 커밋을 여러 커밋으로 나눕니다. (0) | 2022.03.22 |