Сведения о вопросе

GANGST1ER

20:48, 6th August, 2020

Теги

java   maven-2   sourceforge    

Как я могу развернуть артефакты из сборки Maven в систему выпуска файлов SourceForge?

Просмотров: 440   Ответов: 9

Я использую SourceForge для некоторых проектов с открытым исходным кодом, и я хочу автоматизировать deployment выпусков в систему выпуска файлов SourceForge. Я использую Maven для своих сборок, и стандартный механизм SFTP deployment, похоже, не работает, если вы не выполняете ручную подготовительную работу. Я наткнулся на некоторые старые сообщения на других форумах, предполагающие, что единственный подход-это написать вагон специально для SourceForge.

У кого-нибудь был недавний опыт с этим?



  Сведения об ответе

$DOLLAR

21:40, 10th August, 2020

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

Вы можете развернуть в SourceForge с помощью SCP, а maven-deploy-plugin можно настроить на использование SCP, поэтому он должен работать. Вы также можете развернуть свой сайт в SourceForge через SCP.

Вы бы настроили сервер SourceForge в вашем settings.xml для использования имени пользователя "combined" с разделителем запятых. С этими верительными грамотами:

SourceForge username: foo
SourceForge user password: secret
SourceForge project name: bar
Path: /home/frs/project/P/PR/PROJECT_UNIX_NAME/ 
    - Substitute your project UNIX name data for /P/PR/PROJECT_UNIX_NAME 

Серверный элемент будет выглядеть следующим образом:

<server>
  <id>sourceforge</id>
  <username>foo,bar</username>
  <password>secret</password>
</server>

И раздел distributionManagement в вашем POM будет выглядеть так:

<!-- Enabling the use of FTP -->
<distributionManagement>
  <repository>
    <id>ssh-repository</id>
    <url>
scpexe://frs.sourceforge.net:/home/frs/project/P/PR/PROJECT_UNIX_NAME</url>
  </repository>
</distributionManagement>

Наконец, объявите, что используется ssh-external:

<build>
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagon</groupId>
       <artifactId>wagon-ssh-external</artifactId>
       <version>1.0-alpha-5</version>
    </extension>
  </extensions>
</build>

Если это не сработает, вы можете использовать рекомендуемый подход в ссылке на сайт выше, т. е. создать shell на shell.sourceforge.net с вашим именем пользователя и группой проектов:

ssh -t <username>,<project name>@shell.sf.net create

Затем используйте shell.sourceforge.net (вместо web.sourceforge.net) на вашем сайте URL в разделе diestributionManagement:

<url>scp://shell.sourceforge.net/home/frs/project/P/PR/PROJECT_UNIX_NAME/</url>


  Сведения об ответе

ASER

12:15, 12th August, 2020

Я загрузил пример в sourceforge.net по адресу: http://sf-mvn-plugins.sourceforge.net/example-1jar-thinlet/

Вы можете проверить это через svn - так что вы можете увидеть, как использовать плагины для загрузки и загрузки и в область файловой системы sourceforge.net и веб-сайт.

Основные моменты для загрузки-это использование sftp:

Добавить этот код в ваш pom.xml

<distributionManagement>
                <!-- use the following if you're not using a snapshot version. -->
                <repository>
                    <id>sourceforge-sf-mvn-plugins</id>
                    <name>FRS Area</name>
                    <uniqueVersion>false</uniqueVersion>
                    <url>sftp://web.sourceforge.net/home/frs/project/s/sf/sf-mvn-plugins/m2-repo</url>
                </repository>
                <site>
                    <id>sourceforge-sf-mvn-plugins</id>
                    <name>Web Area</name>
                    <url>
                        sftp://web.sourceforge.net/home/groups/s/sf/sf-mvn-plugins/htdocs/${artifactId}
                    </url>
                </site>
</distributionManagement>

Добавьте аналогичный код в settings.xml

   <server>
      <id>sourceforge-sf-mvn-plugins-svn</id>
      <username>tmichel,sf-mvn-plugins</username>
      <password>secret</password>
    </server>

    <server>
      <id>sourceforge-sf-mvn-plugins</id>
      <username>user,project</username>
      <password>secret</password>
    </server>

Главным моментом для загрузки является использование плагина wagon-http-sourceforge maven - смотрите по адресу: sf-mvn-plugins.sourceforge.net/wagon-http-sourceforge/FAQ.html

Пожалуйста, добавьте следующий код к вашему pom.xml

    <repositories>
        <repository>
            <id>sourceforge-svn</id>
            <name>SF Maven Plugin SVN Repository</name>
            <url>http://sf-mvn-plugins.svn.sourceforge.net/svnroot/sf-mvn-plugins/_m2-repo/trunk</url>
        </repository>
    </repositories>


    <pluginRepositories>
        <pluginRepository>
            <id>sourceforge-frs</id>
            <name>SF Maven Plugin Repository</name>
            <url>http://sourceforge.net/projects/sf-mvn-plugins/files/m2-repo</url>
        </pluginRepository>
    </pluginRepositories>

    <build>
    <extensions>
        <extension>
            <groupId>net.sf.maven.plugins</groupId>
            <artifactId>wagon-http-sourceforge</artifactId>
            <version>0.4</version>
        </extension>
    </extensions>
   :
   </build>


  Сведения об ответе

$DOLLAR

20:56, 7th August, 2020

Похоже, мне придется написать это самому.

https://sourceforge.net/projects/wagon-sf/


  Сведения об ответе

FAriza

15:41, 16th August, 2020

Это действительно оказалось не так уж и трудно. Во-первых, у меня был mvn site:deploy, работающий по инструкции на этом сайте sourceforge . В основном вы начинаете sourceforge shell с

ssh -t user,project@shell.sourceforge.net create

Это создаст shell в их конце с папкой, подключенной к вашему проекту по пути, такому как (в зависимости от имени вашего проекта):

/home/groups/c/ch/chex4j/

В том shell я на сервере sourceforge создал папку для моего РЕПО под проект apache папка "htdocs" с

mkdir /home/groups/c/ch/chex4j/htdocs/maven2

В моем settings.xml я установил имя пользователя и пароль для этого сервера shell, чтобы maven мог войти в систему:

<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/"> 
  <servers>
        <server>
            <id>chex4j.sf.net</id>
            <username>me,myproject</username>
            <password>password</password>
            <filePermissions>775</filePermissions>
            <directoryPermissions>775</directoryPermissions>
        </server>
    </servers>
</settings>

В pom.xml вам просто нужно, чтобы ваш distibutionManagement раздел setup назвал сервер по ID, для которого вы установили пароль в файле настроек:

<distributionManagement>
    <site>
        <id>chex4j.sf.net</id>
        <url>scp://shell.sourceforge.net/home/groups/c/ch/chex4j/htdocs/
        </url>
    </site>
    <repository>
        <id>chex4j.sf.net</id>
        <name>SourceForge shell repo</name>
        <url>scp://shell.sourceforge.net/home/groups/c/ch/chex4j/htdocs/maven2</url>
    </repository>
</distributionManagement>

Есть запись хранилища для команды deploy МВН и запись сайт для команды site:deploy МВН. Тогда все, что мне нужно сделать, это запустить соединение shell, чтобы вызвать серверную сторону, а затем на моей локальной стороне просто запустить:

mvn deploy

который загружает jar, pom и sources и тому подобное на мой сайт проектов sourceforge. Если вы попытаетесь попасть в папку /maven2 на вашем веб-сайте проекта sourceforge, пожалуйста, сообщите вам, что список каталогов по умолчанию отключен и как это исправить. Для этого на сервере shell вы создаете файл .htaccess в папке htdocs/maven2, содержащий следующие параметры apache

Options +Indexes

Тогда Бинго, у вас есть РЕПО maven, которое выглядит так:

http://chex4j.sourceforge.net/maven2/net/sf/chex4j/chex4j-core/1.0.0/

Ваш sf.net shell он выключается через несколько часов, чтобы не использовать ресурсы; поэтому вы запускаете "ssh -t ... create", когда хотите развернуть сайт или артефакты сборки.

Вы можете просмотреть весь мой код проекта maven в разделе sourceforge, чтобы увидеть мои рабочие настройки:

http://chex4j.svn.sourceforge.net/viewvc/chex4j/branches/1.0.x/chex4j-core /


  Сведения об ответе

прога

23:50, 13th August, 2020

SCP URL действительно работает. Но не используйте": "после имени сервера. MVN пытается прочитать следующий тест как целое число (номер порта).

Вам не нужно устанавливать туннели, как это сделал симбо1905.


  Сведения об ответе

lool

20:50, 15th August, 2020

После того, как я попробовал это несколько раз, я, наконец, получил его для работы-с sftp не scp. Это должно работать с коробкой unix (или Mac) - я не уверен насчет клиентов sftp для Windoze. Я использую mvn version 2.2.0 и не думаю, что у меня есть какие-то специальные плагины. При этом различные пакеты mvn развертываются в разделе Файлы страницы мой проект.

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

  • пользователя-заменить на ваше имя пользователя sourceforce
  • секрет - замените свой пароль
  • ormlite -- заменить на имя вашего проекта
  • /o/or/ -- заменить на первый символ и первые 2 символа имени вашего проекта

В моем файле $HOME/.m2/settings.xml у меня есть следующее для сервера SF:

<server>
  <id>sourceforge</id>
  <password>secret</password>
  <filePermissions>775</filePermissions>
  <directoryPermissions>775</directoryPermissions>
</server>

Я не указываю имя пользователя в файле settings.xml, потому что это должно быть имя пользователя,проект, и я хочу развернуть несколько пакетов в SF. Затем в моем файле pom.xml для пакета ormlite у меня есть следующее:

<distributionManagement>
 <repository>
  <id>sourceforge</id>
  <name>SourceForge</name>
  <url>sftp://user,ormlite@frs.sourceforge.net:/home/frs/project/o/or/ormlite/releases
  </url>
 </repository>
 <snapshotRepository>
  <id>sourceforge</id>
  <name>SourceForge</name>
  <url>sftp://user,ormlite@frs.sourceforge.net:/home/frs/project/o/or/ormlite/snapshots
  </url>
 </snapshotRepository>
</distributionManagement>

Очевидно, что суффиксы каталогов /releases и /snapshots могут быть изменены в зависимости от вашей файловой иерархии.


  Сведения об ответе

darknet

08:24, 27th August, 2020

Где timp = пользователь и webmacro = проект

scp url не работает:

scp://timp,webmacro@shell.sourceforge.net:/home/groups/w/we/webmacro/htdocs/maven2/

sftp url работает:

 sftp://timp,webmacro@web.sourceforge.net:/home/groups/w/we/webmacro/htdocs/maven2

или для артефактов выпуска проекта:

sftp://timp,webmacro@web.sourceforge.net:/home/frs/project/w/we/webmacro/releases

scp будет работать до shell.sourceforge.net, но вы должны создать shell перед использованием с

ssh -t timp,webmacro@shell.sourceforge.net create


  Сведения об ответе

qwerty101

11:53, 17th August, 2020

Плагин Maven SourceForge не работает с Maven 2. Также я считаю, что этот плагин использует FTP, который больше не поддерживается.


  Сведения об ответе

ASSembler

21:42, 26th August, 2020

Я обнаружил, что CruiseControl может загружать релизы в SFEE, а также работает с Maven и Maven2


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться