Konrad Windszus created JCRVLT-394:
--------------------------------------

             Summary: Get rid of "provided" scope for FileVault dependencies
                 Key: JCRVLT-394
                 URL: https://issues.apache.org/jira/browse/JCRVLT-394
             Project: Jackrabbit FileVault
          Issue Type: Improvement
          Components: vlt
    Affects Versions: 3.4.0
            Reporter: Konrad Windszus
             Fix For: 3.4.2


Almost all dependencies of Jackrabbit FileVault have scope "provided". Although 
in an OSGi context this seems reasonable, FileVault is also used outside of 
OSGi (e.g. within filevault-package-maven-plugin). Using it may lead to the 
following exceptions
{code}
java.lang.NoClassDefFoundError: org/apache/jackrabbit/api/ReferenceBinary
    at 
org.apache.jackrabbit.vault.validation.impl.util.DocumentViewXmlContentHandler.getDocViewNode
 (DocumentViewXmlContentHandler.java:163)
    at 
org.apache.jackrabbit.vault.validation.impl.util.DocumentViewXmlContentHandler.startElement
 (DocumentViewXmlContentHandler.java:134)
    at 
com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement 
(AbstractSAXParser.java:509)
    at 
com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement
 (AbstractXMLDocumentParser.java:182)
    at 
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement
 (XMLNSDocumentScannerImpl.java:351)
    at 
com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook
 (XMLNSDocumentScannerImpl.java:613)
    at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next
 (XMLDocumentFragmentScannerImpl.java:3132)
    at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next
 (XMLDocumentScannerImpl.java:852)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next 
(XMLDocumentScannerImpl.java:602)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next 
(XMLNSDocumentScannerImpl.java:112)
    at 
com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument
 (XMLDocumentFragmentScannerImpl.java:505)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse 
(XML11Configuration.java:842)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse 
(XML11Configuration.java:771)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse 
(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse 
(AbstractSAXParser.java:1213)
    at 
com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse 
(SAXParserImpl.java:643)
    at 
org.apache.jackrabbit.vault.validation.spi.impl.DocumentViewParserValidator.validateDocumentViewXml
 (DocumentViewParserValidator.java:147)
    at 
org.apache.jackrabbit.vault.validation.spi.impl.DocumentViewParserValidator.validateJcrData
 (DocumentViewParserValidator.java:82)
    at 
org.apache.jackrabbit.vault.validation.ValidationExecutor.validateGenericJcrData
 (ValidationExecutor.java:279)
    at 
org.apache.jackrabbit.vault.validation.ValidationExecutor.validateJcrRoot 
(ValidationExecutor.java:181)
    at 
org.apache.jackrabbit.filevault.maven.packaging.ValidatePackageMojo.validateInputStream
 (ValidatePackageMojo.java:120)
    at 
org.apache.jackrabbit.filevault.maven.packaging.ValidatePackageMojo.validateEntry
 (ValidatePackageMojo.java:106)
    at 
org.apache.jackrabbit.filevault.maven.packaging.ValidatePackageMojo.validateEntry
 (ValidatePackageMojo.java:103)
    at 
org.apache.jackrabbit.filevault.maven.packaging.ValidatePackageMojo.validateEntry
 (ValidatePackageMojo.java:103)
    at 
org.apache.jackrabbit.filevault.maven.packaging.ValidatePackageMojo.validateEntry
 (ValidatePackageMojo.java:103)
    at 
org.apache.jackrabbit.filevault.maven.packaging.ValidatePackageMojo.validateArchive
 (ValidatePackageMojo.java:95)
    at 
org.apache.jackrabbit.filevault.maven.packaging.ValidatePackageMojo.validatePackage
 (ValidatePackageMojo.java:85)
    at 
org.apache.jackrabbit.filevault.maven.packaging.ValidatePackageMojo.doExecute 
(ValidatePackageMojo.java:66)
    at 
org.apache.jackrabbit.filevault.maven.packaging.AbstractValidateMojo.execute 
(AbstractValidateMojo.java:217)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo 
(DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute 
(MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject 
(LifecycleModuleBuilder.java:81)
{code}
This is because the transitive dependency of Filevault named jackrabbit-api is 
only referenced with scope provided. 

Currently this forces downstream consumers of FileVault to directly reference 
those transitive reference (even if they don't use them directly).
IMHO all transitive dependencies of FileVault should have scope "compile".



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to