O "quase transparente" ocorre uma vez que essa modalidade de distribuição impõe algumas regras de segurança. Alguns recursos, como o uso de I/O, exigem que o JAR seja assinado (sign) com um certificado, garantindo ao usuário a autenticidade da aplicação.
O kit de desenvolvimento Java, disponibiliza o jarsigner. Um programa que cria e verifica certificados em arquivos JAR. A boa notícia é que projetos desenvolvidos com o Maven, também podem contar com esse recurso!
Através do plugin Jarsigner, é possível indicar ao Maven que durante o build do projeto o JAR deverá ser assinado com um determinado certificado. A seguir o trecho do pom.xml com as definições do Maven para assinar o JAR:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- definicoes do artefato e dependencias omitidas -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jarsigner-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>sign</id>
<phase>package</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<keystore>/home/yaw</keystore>
<alias>key</alias>
<storepass>mykeypass</storepass>
<keypass>mykeypass</keypass>
</configuration>
</plugin>
</plugins>
</build>
</project>
Note o trecho que configuraç a execução do plugin, a tag phase indica que o JAR do projeto deve ser assinado durante a fase package do build. Outro detalhe é que nas configurações indicamos as propriedades do certificado:
- keystore: local (diretório) aonde a chave foi armazenada;
- alias: nome da chave;
- storepass e keypass: senha de acesso da chave;
Caso a aplicação, distribuída pelo Java Web Start, seja assinado as dependências também devem ser assinadas. Ou seja, todos os JARs complementares ao projeto também devem ser assinados. Com o jarsigner podemos assinar JARs terceiros, o
mesmo vale para o plugin do Maven.
Na YaW desenvolvemos alguns projetos para demonstração que utilizam essa abordagem. Veja e execute o projeto Aplicação Desktop com Swing e JPA/Hibernate. Saiba mais detalhes sobre o Java Web Start no tutorial online da Oracle.
Na YaW desenvolvemos alguns projetos para demonstração que utilizam essa abordagem. Veja e execute o projeto Aplicação Desktop com Swing e JPA/Hibernate. Saiba mais detalhes sobre o Java Web Start no tutorial online da Oracle.
@edermag