Pregunta

Estoy usando maven-jarsigner-plugin para firmar una sombra en el uber-jar de la mina.Necesito distribuir algunas dependencias en sus propios frascos sin embargo, y quieren tomar los frascos de un Maven repo, claro que de cualquiera de las firmas existentes, y firmar con mi propio certificado.

Hay Maven plugin que hace esto, o me podría implicar algunos Hormiga plugin trucos?

¿Fue útil?

Solución

Resulta maven-jarsigner-plugin puede re-señal existente frascos usando es removeExistingSignatures config elemento.Así de simple!!!

Yo uso maven-dependency-plugin para copiar los artefactos en una .la guerra de proyecto en el generate-resources fase, luego de firmar en el process-resources la fase.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.8</version>
    <executions>
        <execution>
            <id>copy</id>
            <phase>generate-resources</phase>
            <goals>
                <goal>copy</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>org.lwjgl.lwjgl</groupId>
                        <artifactId>lwjgl-platform</artifactId>
                        <version>2.9.0</version>
                        <classifier>natives-osx</classifier>
                        <type>jar</type>
                        <overWrite>true</overWrite>
                        <outputDirectory>src/main/webapp/</outputDirectory>
                        <destFileName>lwjgl-platform-natives-osx.jar</destFileName>
                    </artifactItem>   
                </artifactItems>        
                <outputDirectory>src/main/webapp</outputDirectory>
                <overWriteReleases>true</overWriteReleases>
                <overWriteSnapshots>true</overWriteSnapshots>
            </configuration>
        </execution>
    </executions>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jarsigner-plugin</artifactId>
    <version>1.2</version>
    <executions>
        <execution>
            <id>sign</id>
            <phase>process-resources</phase>
        <goals>
            <goal>sign</goal>
            </goals>
    </execution>
    </executions>
    <configuration>
        <keystore>${basedir}/path/to/my.keystore</keystore>
        <alias>alias</alias>
        <storepass>password</storepass>
        <keypass>password</keypass>
        <verbose>true</verbose>
        <archiveDirectory>src/main/webapp/</archiveDirectory>
        <processMainArtifact>false</processMainArtifact>
        <removeExistingSignatures>true</removeExistingSignatures>
    </configuration>
</plugin>

Otros consejos

Sé que no es una respuesta realmente buena, pero intentaría una solución en estos pasos:

  • dependencias de copia por maven-dependency-plugin
  • antrun: <unzip>los, tira de todo el directorio, excepto el manifiesto.mf, <jar> nuevamente y firme nuevamente usando la tarea <jarsign> hormiga.

El principal problema que he encontrado desde que trabajo con Maven (recientemente admito) es que lo hace pasar por su oleoducto predefinido, y este tipo de cosas (que es más común de lo que parece) te hará necesitar algunoshábil herrería a medida que lo llamas;)

Nunca lo usé, pero parece que el webstart-maven-plugin puede designar y firmar frascos.

http://mojo.codehaus.org/webstart/webstart-maven-plugin / unsign-mojo.html

Espero esta ayuda.

usando maven:

Crear un módulo de jarra de maven vacío por jarra que desea renunciar, haga un maven dependencia: desempaquete de uno de los frascos, filtrando los archivos de la firma y copiando los archivos a SRC / PRINCIPAL / JAVA.

Luego firma el frasco con maven-jarsigned-plugin, el resultado será un frasco que contenga las mismas clases.

una alternativa sin maven basada:

La forma anterior no se escala bien, probablemente sería más sencillo crear un script que sigue estos pasos .

La forma más sencilla de hacerlo sería:

En lugar de renunciar a los frascos, considere registrar la clave pública del firmante en su repositorio de Maven, lo que significa que confía en la persona que creó estos frascos y acepta a los frascos que vienen de ellos.

La verdad es que ya confía en ellos, ya que está utilizando su código y lo está resignando, por lo que sería más sencillo configurar el repositorio para aceptar su firma, de la misma manera que el repositorio ya estaba configurado por alguien para aceptar su firma .

El repositorio está vinculado a una tienda clave que contiene las claves públicas de los firmantes de JAR aceptados, sería una cuestión de pedirle al equipo que maneja el repositorio para agregar una clave más a su lista de firmantes de confianza, sabrían cómo para hacer eso seguro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top