2014-02-07 5 views
0

Меня попросили посмотреть старый проект, который требует Maven 2.1 и пару JAR, которые не хранятся (и не будут) в нашем Nexus.Как создать Maven «Project Repo»

Я стараюсь следовать совету @Nikita Volkov в сообщении this о создании репо проекта, чтобы держать JAR как артефакты. Идея заключается в том, что я могу проверить это репо на исходный контроль. Затем я могу проверить его на любом компьютере и создать его без какой-либо специальной настройки.

Для начала я создал репозиторий и добавил свой первый Jar ему ход:

mvn install:install-file -DlocalRepositoryPath=repo -DcreateChecksum=true -Dpackaging=jar -Dfile=lib/myJar.jar -DgroupId=my.group -DartifactId=myArtifact -Dversion=0.0.1 

Затем я создаю POM, который выглядит как:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>my.group</groupId> 
    <artifactId>MyApp</artifactId> 
    <packaging>ear</packaging> 
    <version>1.0-SNAPSHOT</version> 

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

    <dependencies> 
     <dependency> 
     <groupId>my.group</groupId> 
     <artifactId>myArtifact</artifactId> 
     <version>0.0.1</version> 
     </dependency> 
    </dependencies> 

    <build> 
    </build> 
</project> 

Когда я рассматриваю это в Eclipse, если флаги в зависимости с ошибкой
Missing artifact my.group:myArtifact:jar:0.0.1.

Когда я запустить его из командной строки Iget ошибка
Unable to find resource 'my.group:myArtifact:pom:0.0.1' in repository my-repo

Очевидно, я не понял, что-то в исходном посте, но я не вижу, что

Так, может кто-нибудь представить рабочий пример того, как создать в-проекта Maven репо?

Update Файлы, хранящиеся в моем местном репо являются:

  • моей/группа/myArtifact/0.0.1/myArtifact-0.0.1.jar
  • моей/группы/myArtifact/0,0 0,1/myArtifact-0.0.1.jar.md5
  • мой/группа/myArtifact/0.0.1/myArtifact-0.0.1.jar.sha1
  • мой/группа/myArtifact/0.0.1/myArtifact-0,0 .1.pom
  • my/group/myArtifact/0.0.1/myArtifact-0.0.1.pom.md5
  • моего/группа/myArtifact/0.0.1/myArtifact-0.0.1.pom.sha1
  • мои/группа/myArtifact/Maven-метаданные-местные. XML
  • моя/группа/myArtifact/Maven-метаданные local.xml.md5
  • моя/группа/myArtifact/Maven-метаданные local.xml.sha1

Update содержание мой .m2/файл настроек:

<?xml version="1.0" encoding="UTF-8"?> 
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> 

    <mirrors> 
    <mirror> 
     <id>nexus</id> 
     <mirrorOf>*</mirrorOf> 
     <url>http://192.168.152.78:5000/nexus/content/groups/public/</url> 
    </mirror> 
    </mirrors> 
</settings> 
+0

@khmarbaise, короткий ответ заключается в том, что я не (и не буду) иметь доступ для записи/обновления к Nexus. – Stormcloud

ответ

0

Рабочий раствор после нескольких обновлений к первоначальному вопросу

Файл settings.xml объявляет кетчуп все зеркало. Это вступает в силу в отношении объявления локального репозитория в вашем файле pom.Либо удалите кетчуп все зеркало, или попытаться исключить хранилище ID вашего репозитория проекта из зеркального отображения:

<mirror>*,!my-repo</mirror> 

Оригинальный ответ

выглядит, как вы установите библиотеку в локальный Maven репозиторий местоположения по умолчанию (~/.m2/repository), но затем вы пытаетесь забрать его из местоположения в вашем проекте.

Попробуйте изменить местоположение хранилища для Maven перед запуском цели «mvn install: install-file». Вы можете сделать это, добавив параметр «localRepository» в settings.xml.

Вы также можете создать новый файл settings.xml специально для своего проекта и указать Maven, чтобы использовать его всякий раз, когда вы работаете над вашим проектом (параметр -s в командной строке). IDE, такие как Eclipse или IntelliJ, также поддерживают альтернативный файл settings.xml.

+0

Привет, @rec, Спасибо, что комментировали. Я надеялся, что опция -DlocalRepositoryPath = repo при создании репо и добавлении JAR означала бы, что репо было создано в подкаталоге или в моем текущем проекте. Я, конечно же, вижу, что maven создал что-то здесь и добавил файлы sha1/md5. Неужели я ошибаюсь, думая, что это репо? Что касается изменения файла settigs.xml, чтобы указать на новое локальное репо, это интересная идея, но мне придется поместить в нее почти 600 артефактов. Поскольку я отступом, чтобы проверить все это на исходный контроль, у меня много файлов, которые мне не нужно управлять. – Stormcloud

+0

Вы правы, я не заметил этого параметра. Он должен иметь тот же эффект, что и изменение settings.xml. Возможно, еще одна догадка заключается в том, что вы находитесь в Windows (вы?), И URL-адрес файла может быть задан по-разному - возможно, без двойного // - я предполагаю, что здесь - я уверен, что то, что вы пытаетесь сделать должно сработать. – rec

+0

Привет @rec. Я использую Windows, и у меня установлен Cygwin. Я попытался запустить maven через обе оболочки (cmd.exe и bash), но ни одно из них не находит репо. Я также попытался сыграть с косыми чертами с URL-адресом без большой удачи. Может быть, я должен использовать Maven 2.1 для этого проекта? – Stormcloud