Come posso distribuire gli artefatti da una build Maven al sistema di rilascio dei file SourceForge?

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

  •  08-06-2019
  •  | 
  •  

Domanda

Sto utilizzando SourceForge per alcuni progetti Open Source e desidero automatizzare la distribuzione delle versioni nel sistema di rilascio dei file SourceForge.Utilizzo Maven per le mie build e il meccanismo di distribuzione SFTP standard non sembra funzionare a meno che non si esegua un lavoro di preparazione manuale.Mi sono imbattuto in alcuni vecchi messaggi su altri forum che suggeriscono che l'unico approccio è scrivere un Wagon appositamente per SourceForge.

Qualcuno ha avuto qualche esperienza recente in merito?

È stato utile?

Soluzione

Non sono in grado di testarlo per confermarlo, ma credo che sia possibile senza scrivere alcun plugin.

Puoi distribuire su SourceForge utilizzando SCP, e il plugin maven-deploy può essere configurato su utilizzare SCP quindi dovrebbe funzionare.Puoi anche distribuire il tuo sito a SourceForge tramite SCP.

Dovresti configurare il server SourceForge nel tuo settings.xml per utilizzare un nome utente "combinato" con un separatore virgola.Con queste credenziali:

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 

L'elemento server sarebbe simile a questo:

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

E la sezione distributionManagement nel tuo POM sarebbe simile a questa:

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

Infine dichiara che deve essere utilizzato 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>

Se questo non funziona, potresti essere in grado di utilizzare l'approccio consigliato nel riferimento al sito sopra, ad es.crea una shell su shell.sourceforge.net con il tuo nome utente e gruppo di progetto:

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

Quindi utilizza shell.sourceforge.net (invece di web.sourceforge.net) nell'URL del tuo sito nella sezione diestributionManagement:

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

Altri suggerimenti

Ho caricato un esempio su sourceforge.net all'indirizzo: http://sf-mvn-plugins.sourceforge.net/example-1jar-thinlet/

Puoi verificarlo tramite svn, così puoi vedere come utilizzare i plugin per caricare e scaricare da e verso l'area del file system e il sito web di sourceforge.net.

I punti principali da caricare sono utilizzare sftp:

Aggiungi questo codice simile al tuo 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>

Aggiungi codice simile 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>

Il punto principale per il download è utilizzare il plugin wagon-http-sourceforge maven - vedere:sf-mvn-plugins.sourceforge.net/wagon-http-sourceforge/FAQ.html

Aggiungi il seguente codice al tuo 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>

Sembra che dovrò scriverlo io stesso.

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

Dopo averlo provato diverse volte, finalmente sono riuscito a farlo funzionare sftp non scp.Dovrebbe funzionare da un sistema Unix (o Mac): non sono sicuro dei client sftp per Windoze.Sto usando la versione 2.2.0 di mvn e non credo di avere plugin speciali installati.Questo distribuisce i vari pacchetti mvn nella sezione File della pagina del mio progetto.

Dovrai modificare quanto segue nelle impostazioni per farlo funzionare:

  • utente: sostituiscilo con il tuo nome utente sourceforce
  • segreto: sostituiscilo con la tua password
  • ormlite: sostituisci con il nome del tuo progetto
  • /o/o/ -- sostituisci con il primo carattere e i primi 2 caratteri del nome del tuo progetto

Nel mio file $HOME/.m2/settings.xml ho quanto segue per il server SF:

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

Non specifico il nome utente nel file settings.xml perché deve essere nome utente, progetto e desidero distribuire più pacchetti su SF.Quindi, nel mio file pom.xml per il pacchetto ormlite ho quanto segue:

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

Ovviamente i suffissi delle directory /releases e /snapshots possono essere modificati a seconda della gerarchia dei file.

Dove timp = utente e webmacro = progetto

L'URL scp non funziona:

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

l'URL sftp funziona:

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

o per gli artefatti di rilascio del progetto:

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

scp funzionerà su shell.sourceforge.net, ma devi creare la shell prima di usarla con

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

In realtà questo non si è rivelato così difficile.Per prima cosa ho fatto funzionare il sito mvn:deploy seguendo le istruzioni su questo sito sourceforge.Fondamentalmente si avvia la shell di sourceforge con

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

Ciò creerà la shell alla fine con una cartella montata sul tuo progetto su un percorso come (a seconda del nome del tuo progetto):

/home/groups/c/ch/chex4j/

In quella shell sul server sourceforge ho creato una cartella per il mio repository nella cartella apache del progetto "htdocs" con

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

Nel mio settings.xml ho impostato il nome utente e la password su quel server Shell in modo che Maven possa accedere:

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

Nel pom.xml hai solo bisogno della configurazione della sezione distibutionManagement per denominare il server in base all'ID per cui hai impostato la password nel file delle impostazioni:

<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ì la voce del repository è quella per il comando mvn deploy e la voce del sito è per il comando mvn site:deploy.Quindi tutto quello che devo fare è avviare la connessione alla shell per visualizzare il lato server, quindi sul mio lato locale eseguire semplicemente:

mvn deploy

che carica jar, pom, sorgenti e simili sul sito Web dei miei progetti Sourceforge.Se provi ad accedere alla cartella /maven2 sul sito web del tuo progetto sourceforge ti informa gentilmente che l'elenco delle directory è disattivato per impostazione predefinita e come risolverlo.Per fare ciò sulla shell del server crea un file .htaccess nella tua cartella htdocs/maven2 contenente le seguenti opzioni di Apache

Options +Indexes

Quindi bingo, hai un repository esperto che assomiglia a:

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

La tua shell sf.net si spegne dopo un certo numero di ore per non consumare risorse;quindi esegui "ssh -t ...create" quando desideri distribuire il sito o gli artefatti di build.

Puoi sfogliare tutto il codice del mio progetto Maven sotto sourceforge per vedere le mie impostazioni di lavoro:

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

URL della SCP fa lavoro.Ma non usare ":" dopo il nome del server.MVN tenta di leggere il seguente test come numero intero (numero di porta).

Non è necessario creare tunnel come ha fatto simbo1905.

Il plug-in Maven SourceForge non funziona con Maven 2.Inoltre credo che questo plug-in utilizzi FTP che non è più supportato.

l'ho trovato Regolazione automatica della velocità può caricare versioni su SFEE e funziona anche con Maven e Maven2

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top