Развертывание jar во внутреннем репозитории maven

#windows #maven-3

#Windows #maven-3

Вопрос:

Я создал внутренний репозиторий maven. У меня есть jar, которые не были созданы с использованием maven, т. е. нет pom.xml файл для них. Мне нужно развернуть этот jar во внутреннем репозитории, который я создал. Для этой цели я использовал mvn deploy:deploy-file. Ниже приведена команда, которую я использовал —

развертывание mvn -X:deploy-file -Durl=scp://localhost/my-repo/ -DrepositoryId=localhost -Dfile=temp.jar -DgroupId=com.myorg -DartifactId=temp -Dversion=1.0 -Dpackaging=jar -Dclassifier=test -DgeneratePom=true -DgeneratePom.description=»временный тест» -DrepositoryLayout=default -DuniqueVersion=false

Я использую Windows xp и apache-maven-3.0.3. Я получаю следующую ошибку —

«[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins:maven-deploy-plugin:2.5:deploy-file (по умолчанию-cli) в project standalone-pom: Не удалось развернуть артефакты / метаданные: Недоступен соединитель для доступа к локальному хосту репозитория (scp://localhost/commons-logging/) типа default с использованием доступных фабрик WagonRepositoryConnectorFactory»

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

Спасибо!!

Комментарии:

1. Ошибка устранена, нам просто нужно скопировать jar-файлы в maven_install_dir/lib / ext /. Ниже приведены файлы jar 1. jsch-0.1.38.jar 2. plexus-interactivity-api-1.0-alpha-6 3. wagon-ssh-1.0-beta-7 4. wagon-ssh-common-1.0-beta-7 Нам нужно это сделать, потому что, поскольку мы пытаемся развернуть jar, который не создан с использованием maven, и поскольку у него нет pom.xml поэтому мы не можем добавить <build> <extensions> … </extensions> </build>, которые требуются для выполнения wagon-ssh. Следовательно, мы напрямую добавляем их в mvn / lib / ext /.

Ответ №1:

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

 mvn install:install-file -DgroupId=javax.transaction -DartifactId=jta -Dpackaging=jar -Dversion=1.0.1B -Dfile=jta-1.0.1B.jar -DgeneratePom=true
  

Если репозиторий представляет собой что-то вроде Nexus, то используйте их пользовательский интерфейс для загрузки артефакта, и он создаст для вас pom.

Ответ №2:

mvn deploy:deploy-file -Durl=scp://d8u.us/home/hd1/public_html/maven2 -DrepositoryId=localhost -Dfile=yourwar.jar -DgroupId=us.d8u -DartifactId=yourwar -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true -DrepositoryLayout=default -DuniqueVersion=false у меня работает. Мне просто нужно было создать maven2 каталог в моем домашнем каталоге и установить соответствующие разрешения для веб-пользователя и списать блог мистера Сьерры, где он любезно предоставил почти рабочие инструкции для моего случая.

Ответ №3:

У меня была такая же проблема при развертывании собственного стороннего jar в наш внутренний репозиторий по ssh. Я закончил использовать небольшой Ant-скрипт, я чувствовал, что это безопаснее, чем возиться с Maven classpath.

 <?xml version="1.0"?>
<project name="Maven Deploy" xmlns:artifact="antlib:org.apache.maven.artifact.ant">

  <property name="repository.id"  value="myrepository"/>
  <property name="repository.url" value="sftp://dev.example.com/var/www/mvn"/>

  <target name="init">
    <mkdir dir="target/lib"/>
    <get src="http://repo1.maven.org/maven2/org/apache/maven/maven-ant-tasks/2.1.3/maven-ant-tasks-2.1.3.jar" dest="target/lib" skipexisting="true"/>
    <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="antlib:org.apache.maven.artifact.ant" classpath="target/lib/maven-ant-tasks-2.1.3.jar"/>

    <artifact:install-provider artifactId="wagon-ssh" version="2.2"/>
  </target>

  <target name="deploy" depends="init">

    <echo>Deploy a jar to the Maven repository:</echo>
    <input addproperty="groupId"    message="groupId:"/>
    <input addproperty="artifactId" message="artifactId:"/>
    <input addproperty="version"    message="version:"/>
    <input addproperty="file"       message="file:" defaultvalue="${artifactId}-${version}.jar"/>

    <artifact:mvn failonerror="true">
      <arg value="org.apache.maven.plugins:maven-deploy-plugin:2.6:deploy-file"/>
      <arg value="-DgroupId=${groupId}"/>
      <arg value="-DartifactId=${artifactId}"/>
      <arg value="-Dversion=${version}"/>
      <arg value="-Durl=${repository.url}"/>
      <arg value="-DrepositoryId=${repository.id}"/>
      <arg value="-Dfile=${file}"/>
    </artifact:mvn>

  </target>

</project>
  

Просто введите ant deploy и укажите groupId, artifactId и версию вашего файла.