2008-08-19 15 views
11

Estoy utilizando SourceForge para algunos proyectos de código abierto y quiero automatizar la implementación de versiones para el sistema de publicación de archivos de SourceForge. Uso Maven para mis compilaciones y el mecanismo de despliegue de SFTP estándar no parece funcionar a menos que haga algún trabajo de preparación manual. He encontrado publicaciones antiguas en otros foros que sugieren que el único enfoque es escribir un Wagon específicamente para SourceForge.¿Cómo puedo implementar artefactos de una construcción Maven en el sistema de publicación de archivos SourceForge?

Alguien ha tenido alguna experiencia reciente con esto?

Respuesta

9

no soy capaz de probar esto para confirmar, pero yo creo que es posible sin necesidad de escribir ningún tipo de plugins .

Puede deploy to SourceForge using SCP, y el complemento maven-deploy se puede configurar en use SCP por lo que debería funcionar. También puede implementar su site to SourceForge a través de SCP.

podrá configurar el servidor SourceForge en su settings.xml utilizar un nombre de usuario "combinado" con un separador de coma. Con estas credenciales:

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 

El elemento servidor sería el siguiente:

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

Y la sección distributionManagement en su POM se vería así:

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

declaran último que ssh- externo se va a utilizar:

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

Si esto no funciona, puede ser capaz de utilizar el enfoque recomendado en la referencia sitio anterior, es decir, crear un shell en shell.sourceforge.net con su nombre de usuario y proyecto de grupo:

ssh -t <username>,<project name>@shell.sf.net create 
a continuación, utilice

shell.sourceforge.net (en lugar de web.sourceforge.net) en la URL del sitio en la sección diestributionManagement:

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

El plug-in de Maven SourceForge no funciona con Maven 2. También creo que este plug-in utiliza FTP que ya no es compatible.

0

me encontré con que CruiseControl pueden subir comunicados a SFEE y también trabaja con Maven y Maven2

1

Después de probar esto varias veces, finalmente tengo que trabajar - con sftpno scp. Esto debería funcionar desde un recuadro Unix (o Mac): no estoy seguro acerca de los clientes de sftp para Windoze. Estoy usando mvn versión 2.2.0 y no creo que tenga ningún complemento especial instalado. Esto implementa los diversos paquetes mvn en la sección Archivos de mi página de proyecto.

Tendrá que cambiar el siguiente en la configuración para conseguir que funcione:

  • usuario - sustituir con su nombre de usuario SourceForce
  • secreto - sustituir con su contraseña
  • ormlite - - sustituir con el nombre del proyecto
  • /o/o/- reemplace con el primer carácter y 2 primeros caracteres del nombre de su proyecto

En mi archivo $ HOME/.m2/settings.xml Tengo el siguiente para el servidor SF:

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

que no especifican el nombre de usuario en el archivo settings.xml porque tiene que ser nombre de usuario, proyecto y quiero implementar múltiples paquetes en SF. Entonces, en mi pom.xml para el paquete ormlite Tengo el siguiente:

<distributionManagement> 
<repository> 
    <id>sourceforge</id> 
    <name>SourceForge</name> 
    <url>sftp://user,[email protected]:/home/frs/project/o/or/ormlite/releases 
    </url> 
</repository> 
<snapshotRepository> 
    <id>sourceforge</id> 
    <name>SourceForge</name> 
    <url>sftp://user,[email protected]:/home/frs/project/o/or/ormlite/snapshots 
    </url> 
</snapshotRepository> 
</distributionManagement> 

Obviamente/releases/instantáneas y sufijos directorio puede ser cambiada dependiendo de su jerarquía de archivos.

1

Dónde TIMP = usuario y webmacro = proyecto

SCP URL no funciona: url

scp://timp,[email protected]:/home/groups/w/we/webmacro/htdocs/maven2/ 

SFTP funciona:

sftp://timp,[email protected]:/home/groups/w/we/webmacro/htdocs/maven2 

o para proyectos artefactos de liberación:

sftp://timp,[email protected]:/home/frs/project/w/we/webmacro/releases 

scp will trabajar a shell.sourceforge.net, pero hay que crear la cáscara antes de usarlo con

ssh -t timp,[email protected] create 
3

He subido un ejemplo para sourceforge.net en: http://sf-mvn-plugins.sourceforge.net/example-1jar-thinlet/

Se puede extraer de ella a través de SVN - por lo puede ver cómo usar complementos para cargar y descargar y para el área del sistema de archivos sourceforge.net y el sitio web.

Los principales puntos son para subir a utilizar SFTP:

Añadir este código similar a su 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> 

Añadir un código similar 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> 

La principal El punto de descarga es utilizar el complemento maven wagon-http-sourceforge. Consulte en: sf-mvn-plugins.sourceforge.net/wagon-http-sourceforge/FAQ.html

Añada el siguiente código a su 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> 
1

Esto realmente no resultó ser tan difícil. Primero tuve el sitio mvn: despliegue trabajando siguiendo las instrucciones en this sourceforge site.Básicamente se inicia la cáscara sourceforge con

ssh -t user,[email protected] create 

que va a crear la cáscara en su extremo con una carpeta montada en su proyecto en un camino como (dependiendo de sus proyectos nombre):

/home/groups/c/ch/chex4j/ 

En esa cáscara que en el servidor de SourceForge que crea una carpeta para mi repo en el epígrafe "htdocs" carpeta apache proyecto con

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

en mi settings.xml puse el nombre de usuario y contraseña para que sh ell servidor para que Maven puede iniciar sesión:

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

En el pom.xml sólo tiene la configuración de su sección distibutionManagement para nombrar el servidor de identificación que establece la contraseña en la configuración del archivo:

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

Allí, la entrada del repositorio es la del comando mvn deploy y la entrada del sitio es para el sitio mvn: comando deploy. Entonces todo lo que tengo que hacer es iniciar la conexión de shell para abrir el lado del servidor y luego en mi lado local basta con ejecutar:

mvn deploy 

que carga el frasco, pom y las fuentes y similares en mi página web del proyecto SourceForge. Si intenta acceder a la carpeta/maven2 en el sitio web de su proyecto, sourceforge amablemente le dirá que la lista de directorios está desactivada por defecto y cómo solucionarlo. Para hacer esto en el shell del servidor se crea un archivo .htaccess en la carpeta htdocs/maven2 que contiene las siguientes opciones Apache

Options +Indexes 

A continuación, el bingo, usted tiene un acuerdo de recompra experto que se parece a:

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

Su shell sf.net se apaga después de varias horas para no acaparar recursos; entonces ejecuta el "ssh -t ... create" cuando desea implementar el sitio o sus artefactos de construcción.

se puede navegar todo mi código de proyecto experto en virtud de sourceforge para ver la configuración de mi trabajo:

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

1

SCP URL hace trabajo. Pero no use ":" después del nombre del servidor. MVN intenta leer la siguiente prueba como un número entero (número de puerto).

No es necesario establecer túneles como lo hizo simbo1905.

Cuestiones relacionadas