para - maven tutorial español
las dependencias de dependencia no están incluidas (2)
a partir de sus consideraciones, encontré una solución para construir un frasco gordo de mi aplicación, incluido Sesame. Tuve que usar otro plugin maven, que es sombra y la configuración para mi compilación es la siguiente:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>my.package.main.MyMain</mainClass>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Las partes más interesantes son:
- Elemento mainClass: para especificar el principal
- ServicesResourceTransformer: el núcleo de nuestro problema con el sésamo, que es META-INF / services / dir. Este transformador ayuda a fusionar los servicios de dependencias META-INF (como se explica mejor en http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#ServicesResourceTransformer )
- filtros: para firmar el contenedor (más detalles en: http://zhentao-li.blogspot.it/2012/06/maven-shade-plugin-invalid-signature.html )
Espero eso ayude. Saludos, Riccardo
Tengo una aplicación Java que tiene algunas dependencias, entre ellas otro proyecto con sus propias dependencias. Cada vez que lo ejecuto desde Netbeans o con mvn, el ejecutor está bien, pero cuando intento empaquetarlo, aunque se haya creado correctamente, en el momento de la ejecución recibo el siguiente error:
Exception in thread "main" org.openrdf.rio.UnsupportedRDFormatException: No parser factory available for RDF format Turtle (mimeTypes=text/turtle, application/x-turtle; ext=ttl)
at org.openrdf.rio.Rio.createParser(Rio.java:198)
at org.openrdf.rio.Rio.createParser(Rio.java:213)
at org.openrdf.repository.util.RDFLoader.loadInputStreamOrReader(RDFLoader.java:318)
at org.openrdf.repository.util.RDFLoader.load(RDFLoader.java:222)
at org.openrdf.repository.util.RDFLoader.load(RDFLoader.java:104)
at org.openrdf.repository.base.RepositoryConnectionBase.add(RepositoryConnectionBase.java:217)
at net.antidot.semantic.rdf.model.impl.sesame.SesameDataSet.loadDataFromFile(SesameDataSet.java:160)
entonces el problema es que los analizadores sintácticos de rio parecen no estar incluidos aunque los pueda ver en mi repositorio maven. Incluyo todas las dependencias en el proyecto incluido. También traté de excluirlos y agregarlos explícitamente a mi proyecto principal y nuevamente falló.
¿Alguna sugerencia?
mi árbol de dependencias:
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ RMLMapper ---
[INFO] be.ugent.mmlab:RMLMapper:jar:0.1
[INFO] +- junit:junit:jar:4.11:test
[INFO] | /- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] +- xom:xom:jar:1.2.5:compile
[INFO] | +- xml-apis:xml-apis:jar:1.3.03:compile
[INFO] | +- xerces:xercesImpl:jar:2.8.0:compile
[INFO] | /- xalan:xalan:jar:2.7.0:compile
[INFO] +- jlibs:jlibs-xmldog:jar:1.0:compile
[INFO] | +- jlibs:jlibs-xml:jar:1.0:compile
[INFO] | | +- jlibs:jlibs-core:jar:1.0:compile
[INFO] | | /- jlibs:jlibs-nbp:jar:1.0:compile
[INFO] | /- jaxen:jaxen:jar:1.1.1:compile
[INFO] +- com.jayway.jsonpath:json-path:jar:0.8.1:compile
[INFO] | +- net.minidev:json-smart:jar:1.1.1:compile
[INFO] | /- commons-lang:commons-lang:jar:2.6:compile
[INFO] +- com.jayway.jsonpath:json-path-assert:jar:0.9.1:test
[INFO] | /- org.hamcrest:hamcrest-library:jar:1.3:test
[INFO] +- net.antidot:db2triples:jar:1.0.2:compile
[INFO] | +- commons-logging:commons-logging:jar:1.1.2:compile
[INFO] | +- mysql:mysql-connector-java:jar:5.1.25:compile
[INFO] | +- postgresql:postgresql:jar:9.1-901.jdbc4:compile
[INFO] | /- org.slf4j:slf4j-simple:jar:1.6.1:runtime
[INFO] +- org.openrdf.sesame:sesame-runtime:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-model:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-repository-api:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-repository-manager:jar:2.7.12:compile
[INFO] | | +- org.openrdf.sesame:sesame-repository-event:jar:2.7.12:compile
[INFO] | | +- org.openrdf.sesame:sesame-sail-memory:jar:2.7.12:compile
[INFO] | | +- org.openrdf.sesame:sesame-http-client:jar:2.7.12:compile
[INFO] | | | /- commons-httpclient:commons-httpclient:jar:3.1:compile
[INFO] | | /- org.openrdf.sesame:sesame-http-protocol:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-repository-http:jar:2.7.12:compile
[INFO] | | +- org.openrdf.sesame:sesame-queryparser-api:jar:2.7.12:compile
[INFO] | | /- org.openrdf.sesame:sesame-queryresultio-api:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-repository-sparql:jar:2.7.12:compile
[INFO] | | +- org.openrdf.sesame:sesame-queryparser-sparql:jar:2.7.12:compile
[INFO] | | /- org.openrdf.sesame:sesame-queryresultio-sparqlxml:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-repository-contextaware:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-repository-sail:jar:2.7.12:compile
[INFO] | | /- org.openrdf.sesame:sesame-rio-trig:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-sail-api:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-sail-federation:jar:2.7.12:compile
[INFO] | +- org.slf4j:slf4j-api:jar:1.6.1:compile
[INFO] | +- org.openrdf.sesame:sesame-queryparser-serql:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-queryresultio-binary:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-queryresultio-sparqljson:jar:2.7.12:runtime
[INFO] | | /- com.fasterxml.jackson.core:jackson-core:jar:2.2.1:runtime
[INFO] | +- org.openrdf.sesame:sesame-queryresultio-text:jar:2.7.12:runtime
[INFO] | | /- net.sf.opencsv:opencsv:jar:2.0:runtime
[INFO] | +- org.openrdf.sesame:sesame-repository-dataset:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-rio-languages:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-rio-binary:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-rio-nquads:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-rio-n3:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-rio-rdfjson:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-rio-rdfxml:jar:2.7.12:runtime
[INFO] | +- org.openrdf.sesame:sesame-rio-trix:jar:2.7.12:runtime
[INFO] | /- org.openrdf.sesame:sesame-sail-rdbms:jar:2.7.12:runtime
[INFO] | /- commons-dbcp:commons-dbcp:jar:1.3:runtime
[INFO] | /- commons-pool:commons-pool:jar:1.5.4:runtime
[INFO] +- org.openrdf.sesame:sesame-sail-nativerdf:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-sail-inferencer:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-queryalgebra-evaluation:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-queryalgebra-model:jar:2.7.12:compile
[INFO] | +- org.openrdf.sesame:sesame-query:jar:2.7.12:compile
[INFO] | /- org.openrdf.sesame:sesame-util:jar:2.7.12:compile
[INFO] +- com.sun.org.apache:jaxp-ri:jar:1.4:compile
[INFO] | /- javax.xml.parsers:jaxp-api:jar:1.4:compile
[INFO] +- net.sourceforge.javacsv:javacsv:jar:2.0:compile
[INFO] +- commons-io:commons-io:jar:1.3.2:compile
[INFO] +- net.sf.saxon:Saxon-HE:jar:compressed:9.5.1-4:compile
[INFO] +- org.jodd:jodd-lagarto:jar:3.5:compile
[INFO] | +- org.jodd:jodd-log:jar:3.5:compile
[INFO] | /- org.jodd:jodd-core:jar:3.5:compile
[INFO] +- org.jsoup:jsoup:jar:1.7.3:compile
[INFO] +- org.apache.httpcomponents:httpclient:jar:4.2.2:compile
[INFO] | +- org.apache.httpcomponents:httpcore:jar:4.2.2:compile
[INFO] | /- commons-codec:commons-codec:jar:1.6:compile
[INFO] +- com.github.fge:uri-template:jar:0.9:compile
[INFO] | +- com.github.fge:msg-simple:jar:1.1:compile
[INFO] | | /- com.github.fge:btf:jar:1.2:compile
[INFO] | +- com.google.guava:guava:jar:16.0.1:compile
[INFO] | /- com.google.code.findbugs:jsr305:jar:2.0.1:compile
[INFO] +- org.openrdf.sesame:sesame-rio-api:jar:2.7.12:compile
[INFO] +- org.openrdf.sesame:sesame-rio-datatypes:jar:2.7.12:compile
[INFO] +- org.openrdf.sesame:sesame-rio-turtle:jar:2.7.12:compile
[INFO] +- org.openrdf.sesame:sesame-rio-ntriples:jar:2.7.12:compile
[INFO] +- org.openrdf.sesame:sesame-rio-n3:pom:2.7.12:compile
[INFO] +- org.openrdf.sesame:sesame-rio:pom:2.7.12:compile
[INFO] /- commons-cli:commons-cli:jar:1.2:compile
El problema es que está reempaquetando los frascos de sésamo incorrectamente. El objetivo de jar-with-dependencies
Maven desempaqueta frascos de terceros para poner los contenidos en un único frasco de proyectos grandes. Eso no funcionará con las bibliotecas Sesame: necesita las jarras originales intactas con META-INF/services/
dirs en su lugar.
Actualización En lugar de producir un onejar con ''jar-with-dependencies'', puede usar el plugin Maven Shade , que tiene opciones de configuración específicas para tratar con la fusión correcta de los directorios META-INF/services
.