#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 и версию вашего файла.