Como posso implantar artefatos de uma compilação Maven no SourceForge File Release System?

StackOverflow https://stackoverflow.com/questions/16487

  •  08-06-2019
  •  | 
  •  

Pergunta

Estou usando o SourceForge para alguns projetos de código aberto e quero automatizar a implantação de versões no sistema de liberação de arquivos do SourceForge.Eu uso o Maven para minhas compilações e o mecanismo de implantação SFTP padrão parece não funcionar, a menos que você faça algum trabalho de preparação manual.Encontrei algumas postagens antigas em outros fóruns sugerindo que a única abordagem é escrever um Wagon especificamente para o SourceForge.

Alguém teve alguma experiência recente com isso?

Foi útil?

Solução

Não consigo testar para confirmar, mas acredito que seja possível sem escrever nenhum plugin.

Você pode implantar no SourceForge usando SCP, e o maven-deploy-plugin pode ser configurado para usar SCP então deve funcionar.Você também pode implantar seu site para SourceForge através do SCP.

Você configuraria o servidor SourceForge em seu settings.xml para usar um nome de usuário "combinado" com um separador de vírgula.Com estas credenciais:

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 

O elemento do servidor ficaria assim:

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

E a seção DistributionManagement no seu POM ficaria assim:

<!-- 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>

Finalmente, declare que ssh-external deve ser usado:

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

Se isso não funcionar, você poderá usar a abordagem recomendada na referência do site acima, ou seja,crie um shell em shell.sourceforge.net com seu nome de usuário e grupo de projeto:

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

Em seguida, use shell.sourceforge.net (em vez de web.sourceforge.net) no URL do seu site na seção diestributionManagement:

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

Outras dicas

Enviei um exemplo para sourceforge.net em: http://sf-mvn-plugins.sourceforge.net/example-1jar-thinlet/

Você pode conferir via svn - para ver como usar plug-ins para upload e download e para a área do sistema de arquivos sourceforge.net e o site.

Os principais pontos para fazer upload são usar sftp:

Adicione este código semelhante ao seu 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>

Adicione código semelhante a 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>

O principal ponto para download é usar o plugin wagon-http-sourceforge maven - veja em:sf-mvn-plugins.sourceforge.net/wagon-http-sourceforge/FAQ.html

Adicione o seguinte código ao seu 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>

Parece que vou ter que escrever isso sozinho.

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

Depois de tentar isso várias vezes, finalmente consegui fazer funcionar - com sftp não scp.Isso deve funcionar em uma caixa Unix (ou Mac) - não tenho certeza sobre clientes SFTP para Windoze.Estou usando o mvn versão 2.2.0 e acho que não tenho nenhum plugin especial instalado.Isso implanta os vários pacotes mvn na seção Arquivos da página do meu projeto.

Você precisará alterar o seguinte em suas configurações para que funcione:

  • usuário - substitua pelo seu nome de usuário do sourceforce
  • segredo - substitua pela sua senha
  • ormlite - substitua pelo nome do seu projeto
  • /o/or/ -- substitua pelo primeiro caractere e pelos 2 primeiros caracteres do nome do seu projeto

No meu arquivo $HOME/.m2/settings.xml, tenho o seguinte para o servidor SF:

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

Não especifico o nome de usuário no arquivo settings.xml porque precisa ser nome de usuário, projeto e quero implantar vários pacotes no SF.Então, no meu arquivo pom.xml do pacote ormlite, tenho o seguinte:

<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>

Obviamente, os sufixos dos diretórios /releases e /snapshots podem ser alterados dependendo da hierarquia de arquivos.

Onde tim = usuário e webmacro = projeto

URL scp não funciona:

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

URL sftp funciona:

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

ou para artefatos de lançamento do projeto:

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

scp funcionará em shell.sourceforge.net, mas você deve criar o shell antes de usar com

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

Isso realmente não foi tão difícil.Primeiro eu tinha o mvn site:deploy funcionando seguindo as instruções em este site do sourceforge.Basicamente você inicia o shell do sourceforge com

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

Isso criará o shell no final com uma pasta montada no seu projeto em um caminho como (dependendo do nome do seu projeto):

/home/groups/c/ch/chex4j/

Nesse shell, no servidor sourceforge, criei uma pasta para meu repositório na pasta apache do projeto "htdocs" com

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

No meu settings.xml eu defino o nome de usuário e a senha desse servidor shell para que o maven possa fazer login:

<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>

No pom.xml você só precisa da configuração da seção distibutionManagement para nomear o servidor pelo ID para o qual você definiu a senha em seu arquivo de configurações:

<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>

Lá, a entrada do repositório é aquela para o comando mvn deploy e a entrada do site é para o comando mvn site:deploy.Então tudo o que preciso fazer é iniciar a conexão shell para abrir o lado do servidor e, no meu lado local, basta executar:

mvn deploy

que carrega o jar, pom e fontes e similares no meu site de projetos do sourceforge.Se você tentar acessar a pasta /maven2 no site do seu projeto, sourceforge, informe que a listagem de diretórios está desativada por padrão e como corrigi-la.Para fazer isso no shell do servidor, você cria um arquivo .htaccess em sua pasta htdocs/maven2 contendo as seguintes opções do Apache

Options +Indexes

Então bingo, você tem um repositório maven que se parece com:

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

Seu shell sf.net é desligado após algumas horas para não consumir recursos;então você executa o "ssh -t ...create" quando desejar implantar o site ou seus artefatos de construção.

Você pode navegar por todo o código do meu projeto maven no sourceforge para ver minhas configurações de trabalho:

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

URL SCP faz trabalhar.Mas não use ":" após o nome do servidor.MVN tenta ler o seguinte teste como número inteiro (número da porta).

Você não precisa estabelecer túneis como o simbo1905 fez.

O plug-in Maven SourceForge não funciona com o Maven 2.Também acredito que este plug-in usa FTP que não é mais suportado.

eu achei aquilo CruiseControl pode fazer upload de versões para SFEE e também funciona com Maven e Maven2

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top