Как добавить новый файл jar в качестве зависимости к POM.xml веб-проекта Java Maven?

1

Я хочу подключиться к базе данных Lotus Notes (8.5.3) из моего проекта java web (Maven). после некоторых поисков, поэтому, чтобы подключиться к базе данных Lotus Notes из моего веб-проекта java через CORBA DIIOP, мне нужно добавить NCSO.jar в качестве новой зависимости от моего веб-проекта Maven Java. Я нашел эту ссылку: как добавить \install для maven зависимости недавно созданной\сторонней банки в pom.xml, но я до сих пор не могу понять, как заставить ее работать. Я могу найти NCSO.jar с моей локальной машины, но на основе этой ссылки мне нужно создать свой собственный репозиторий для этого файла, а затем добавить его в мой файл pom.xml. Это мой первый раз, чтобы добавить зависимость.jar к моему веб-проекту java (pom.xml). В моем веб-проекте java у меня есть часть веб-части EJB, и у каждого есть pom.xml. Не уверен, как добавить этот.jar в pom.xml.

 my java IDE is built on eclipse, the current workspace structure is like this: The current workspace called: developer, it contains followings: 
 developer
    workspaces (folder)
      Java-2014prj (folder)
         .settings (folder)
         projEAR (folder) 
         projEJB (folder)
         projWeb (folder)
         src (folder)
         .project
         pom.xml

is this the correct commands? and if this is correct and no errors, what should I do after the command executed? are all POM.xml added the NCSO.jar?
c:\developer>mvn install:install-file
Dfile=c:\NCSO.jar
DgroupId=lotus
DartifactId=domino
Dversion=1.0.0
Dpackaging=.jar
DgeneratePom=true

projEAR, projEJB и projWeb каждый содержит pom.xml. NCSO.jar находится на моем местном c: /NCSO.jar. Поэтому я предполагаю, что должен запускать коды на экране моего окна (черный). Должен ли я запустить его в верхней папке проекта c:\developer? или некоторые подпапки? Я не знаю, как создать свой локальный репозиторий? Может ли кто-нибудь предоставить мне более подробную информацию? Благодарю.


Изменить - мой результат основан на инструкциях axiopisty ниже

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] PARENT project of MARKETPROJ
[INFO] EJB project of MARKETPROJ
[INFO] WAR project of MARKETPROJ
[INFO] EAR project of MARKETPROJ
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven
-install-plugin/2.4/maven-install-plugin-2.4.pom
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:mave
n-install-plugin:2.4: Plugin org.apache.maven.plugins:maven-install-plugin:2.4 o
r one of its dependencies could not be resolved: Failed to read artifact descrip
tor for org.apache.maven.plugins:maven-install-plugin:jar:2.4
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven
-deploy-plugin/2.7/maven-deploy-plugin-2.7.pom
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:mave
n-deploy-plugin:2.7: Plugin org.apache.maven.plugins:maven-deploy-plugin:2.7 or
one of its dependencies could not be resolved: Failed to read artifact descripto
r for org.apache.maven.plugins:maven-deploy-plugin:jar:2.7
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven
-site-plugin/3.3/maven-site-plugin-3.3.pom
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:mave
n-site-plugin:3.3: Plugin org.apache.maven.plugins:maven-site-plugin:3.3 or one
of its dependencies could not be resolved: Failed to read artifact descriptor fo
r org.apache.maven.plugins:maven-site-plugin:jar:3.3
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven
-antrun-plugin/1.3/maven-antrun-plugin-1.3.pom
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:mave
n-antrun-plugin:1.3: Plugin org.apache.maven.plugins:maven-antrun-plugin:1.3 or
one of its dependencies could not be resolved: Failed to read artifact descripto
r for org.apache.maven.plugins:maven-antrun-plugin:jar:1.3
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven
-assembly-plugin/2.2-beta-5/maven-assembly-plugin-2.2-beta-5.pom
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:mave
n-assembly-plugin:2.2-beta-5: Plugin org.apache.maven.plugins:maven-assembly-plu
gin:2.2-beta-5 or one of its dependencies could not be resolved: Failed to read
artifact descriptor for org.apache.maven.plugins:maven-assembly-plugin:jar:2.2-b
eta-5
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven
-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:mave
n-dependency-plugin:2.8: Plugin org.apache.maven.plugins:maven-dependency-plugin
:2.8 or one of its dependencies could not be resolved: Failed to read artifact d
escriptor for org.apache.maven.plugins:maven-dependency-plugin:jar:2.8
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven
-release-plugin/2.3.2/maven-release-plugin-2.3.2.pom
[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:mave
n-release-plugin:2.3.2: Plugin org.apache.maven.plugins:maven-release-plugin:2.3
.2 or one of its dependencies could not be resolved: Failed to read artifact des
criptor for org.apache.maven.plugins:maven-release-plugin:jar:2.3.2
Downloading: https://repo.maven.apache.org/maven2/org/codehaus/mojo/maven-metada
ta.xml
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven
-metadata.xml
[WARNING] Could not transfer metadata org.apache.maven.plugins/maven-metadata.xm
l from/to central (https://repo.maven.apache.org/maven2): Failed to transfer fil
e: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.
xml. Return code is: 501 , ReasonPhrase:Not Implemented.
[WARNING] Could not transfer metadata org.codehaus.mojo/maven-metadata.xml from/
to central (https://repo.maven.apache.org/maven2): Failed to transfer file: http
s://repo.maven.apache.org/maven2/org/codehaus/mojo/maven-metadata.xml. Return co
de is: 501 , ReasonPhrase:Not Implemented.
[WARNING] Failure to transfer org.apache.maven.plugins/maven-metadata.xml from h
ttps://repo.maven.apache.org/maven2 was cached in the local repository, resoluti
on will not be reattempted until the update interval of central has elapsed or u
pdates are forced. Original error: Could not transfer metadata org.apache.maven.
plugins/maven-metadata.xml from/to central (https://repo.maven.apache.org/maven2
): Failed to transfer file: https://repo.maven.apache.org/maven2/org/apache/mave
n/plugins/maven-metadata.xml. Return code is: 501 , ReasonPhrase:Not Implemented
.
[WARNING] Failure to transfer org.codehaus.mojo/maven-metadata.xml from https://
repo.maven.apache.org/maven2 was cached in the local repository, resolution will
 not be reattempted until the update interval of central has elapsed or updates
are forced. Original error: Could not transfer metadata org.codehaus.mojo/maven-
metadata.xml from/to central (https://repo.maven.apache.org/maven2): Failed to t
ransfer file: https://repo.maven.apache.org/maven2/org/codehaus/mojo/maven-metad
ata.xml. Return code is: 501 , ReasonPhrase:Not Implemented.
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] PARENT project of MARKETPROJ ............................. SKIPPED
[INFO] EJB project of MARKETPROJ ................................ SKIPPED
[INFO] WAR project of MARKETPROJ ................................ SKIPPED
[INFO] EAR project of MARKETPROJ ................................ SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.624 s
[INFO] Finished at: 2015-01-18T13:30:32-05:00
[INFO] Final Memory: 9M/244M
[INFO] ------------------------------------------------------------------------
[ERROR] No plugin found for prefix 'deploy' in the current project and in the pl
ugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the rep
ositories [local (C:\Users\jsmith\.m2\repository), central (https://repo.maven.apa
che.org/maven2)] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoPluginFoundF
orPrefixException

********************************
**EDIT again:**
 I just checked my pom.xml again, and found we have these codes 
  <!-- local file-based repository on the team shared drive -->
    <repository>
        <id>MARKETPROJ-repo-local</id>
        <name>MARKETPROJ File Based Internal Repository</name>
        <url>file://\\mark\mark_shrdata\MARKETPROJ\maven2\repo</url>
    </repository>
  • 0
    Если NCSO.jar является локальным файлом, то посетите: stackoverflow.com/questions/4955635/…
  • 0
    да, это локальный файл, я скопировал файл NCSO.jar в свой локальный каталог C: /NCSO.jar, затем запустил коды в качестве вашей ссылки: но я получил BUILD FAILURE с [ОШИБКА] Для указанной цели требуется проект выполнить, но в этом каталоге нет POM C: \ apcke-maven-3.2.3 \ bin. пожалуйста, убедитесь, что вы вызвали Maven из правильного каталога. Должен ли я создать фиктивный пом в этом каталоге?
Показать ещё 3 комментария
Теги:
maven
jar

2 ответа

1

Если ваша зависимость не доступна в общедоступном репозитории, вам необходимо установить зависимость в локальный репозиторий maven. Возможно, у вас ~/.m2/repository соблазн установить его в ваш ~/.m2/repository, это тот подход, о котором ~/.m2/repository другие ответы на этот вопрос. Если вы это сделаете, сборка будет отлично работать для вас, на этой машине. Но это не лучшее решение. На самом деле это плохое решение, потому что сборка проекта зависит от этого установленного вручную артефакта. Если вы удалите ~/.m2/repository ваша сборка завершится неудачно, потому что артефакт больше не будет находиться в репозитории.

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

См. Здесь подробное объяснение: https://devcenter.heroku.com/articles/local-maven-dependencies

Например, если ваш проект выглядит следующим образом:

yourproject
+- pom.xml
+- src

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

yourproject
+- pom.xml
+- src
+- repo

А затем установите зависимость в локальный репозиторий проекта с помощью этой команды:

mvn deploy:deploy-file -Durl=file:///path/to/yourproject/repo/ -Dfile=NCSO.jar -DgroupId=ncso -DartifactId=ncso -Dpackaging=jar -Dversion=1.0

Таким образом, ваш проект будет выглядеть следующим образом:

yourproject
+- pom.xml
+- src
+- repo
   +- nsco
      +- ncso
         +- maven-metadata.xml
         +- ...
         +- 1.0
            +- ncso-1.0.jar
            +- ncso-1.0.pom
            +- ...

Затем сообщите вашему проекту pom.xml файл о локальном репозитории проекта:

<repositories>
    <!--other repositories if any-->
    <repository>
        <id>project.local</id>
        <name>project</name>
        <url>file:${project.basedir}/repo</url>
    </repository>
</repositories>

И добавьте локальную зависимость проекта к pom.xml:

<dependency>
    <groupId>ncso</groupId>
    <artifactId>ncso</artifactId>
    <version>1.0</version>
</dependency>

EDIT - на основе вопросов в комментариях.

Предполагая, что вы временно сохранили зависимость, которая должна быть развернута в локальном репозитории maven проекта в корне диска C: и что ваш проект также хранится в корневом каталоге диска C: поэтому ваш диск C: это:

C:/NCSO.JAR
C:/yourproject
C:/yourproject/pom.xml
C:/yourproject/src
C:/yourproject/repo

Предполагая, что вы запустите следующую команду в командной строке из корня диска C:, это будет команда, которую вы будете использовать для установки зависимости в локальном репозитории проекта:

C:\> mvn deploy:deploy-file -Durl=file:///C:/yourproject/repo/ -Dfile=NCSO.jar -DgroupId=ncso -DartifactId=ncso -Dpackaging=jar -Dversion=1.0

После успешного выполнения этой команды вы можете удалить файл C: /NCSO.jar. Он больше не нужен, потому что он был установлен (дублирован) в локальный репозиторий проекта. На этом этапе вы также добавите C: /yourproject/repo и все свои данные в свою систему контроля версий, чтобы папка репо и все данные внутри нее стали постоянной частью вашего проекта.

  • 0
    Огромное спасибо за подробную информацию, на самом деле, это мое беспокойство, так как у нас есть большая команда Java в этом Java-проекте в то же время, я должен убедиться, что добавленная мной зависимость работает для других разработчиков после того, как я зафиксировал свои коды в eclipse в ваших кодах -Durl = file: /// path / to / yourproject / repo /, как применить это к моей ситуации? когда я должен передать свои коды в SVN? я должен совершить это после последнего шага, который вы упомянули? Я должен быть осторожен, чтобы избежать сбоев системы и заставить ее работать на себя, прежде чем перейти к SVN.
  • 0
    и эта команда: mvn deploy: deploy-file -Durl = file ....., какой каталог я должен запустить эти коды? я должен запустить его по пути "разработчика" (например, c: \ developer> mvn deploye: deploy-file -Durl = file ... ...) или где-нибудь еще?
Показать ещё 8 комментариев
0

Используя подсказку cmd или терминал, вы mvn устанавливаете банку в качестве предлагаемой ссылки, чтобы она была создана в вашем репозитории.m2, а затем просто добавьте как следует к вашему pom.xml

В командной строке cmd или terimal:

mvn install:install-file -Dfile="path-to-jar-file" -DgroupId=com.project.ncso -DartifactId=ncso -Dversion=1.0.0 -Dpackaging=jar

В вашем pom.xml внутри каталога проекта добавьте следующее:

<dependency>
        <groupId>com.project.ncso</groupId>
        <artifactId>ncso</artifactId>
        <version>1.0.0</version>
    </dependency>
  • 0
    пожалуйста, прочитайте мой предыдущий ответ, он не работает. любая идея?
  • 0
    Что ты имеешь в виду под этим не работает? Где твой проект? В каталоге вашего проекта должен быть файл pom.xml
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню