You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-dev@jackrabbit.apache.org by Torgeir Veimo <to...@gmail.com> on 2016/11/15 01:12:16 UTC

oak-lucene shaded

I'm in need of running oak in a non-osgi environment with a more recent
version of lucene already on the classpath, so I've experimented with using
the maven shade plugin to embed a shaded lucene jar inside the oak-lucene
jar.

I'm not very familiar with the shade plugin, so there might be better ways
of doing this, but here's a modified pom.xml that will built to an artifact
that can be included with the id org.apache.jackrabbit:oak-lucene-shaded

This might be useful for someone.

<?xml version="1.0" encoding="UTF-8"?>

<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<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/maven-v4_0_0.xsd
">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.apache.jackrabbit</groupId>
        <artifactId>oak-parent</artifactId>
        <version>1.4.6</version>
        <relativePath>../oak-parent/pom.xml</relativePath>
    </parent>

    <artifactId>oak-lucene-shaded</artifactId>
    <name>Oak Lucene (shaded)</name>
    <!--<packaging>bundle</packaging>-->
    <description>Oak Lucene integration subproject</description>

    <properties>
        <tika.version>1.5</tika.version>
    </properties>

    <build>
        <plugins>
            <!-- https://app.camunda.com/jira/browse/CAM-1573 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>generate-sources-for-shade-plugin</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.4.3</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <!--<minimizeJar>true</minimizeJar>-->

<promoteTransitiveDependencies>false</promoteTransitiveDependencies>
                            <shadeSourcesContent>true</shadeSourcesContent>
                            <createSourcesJar>true</createSourcesJar>
                            <shadeSourcesContent>true</shadeSourcesContent>

                            <relocations>
                                <relocation>
                                    <pattern>org.apache.lucene</pattern>

<shadedPattern>org.shaded.apache.lucene</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>org.tartarus.snowball</pattern>

<shadedPattern>org.shaded.tartarus.snowball</shadedPattern>
                                </relocation>
                            </relocations>
                            <artifactSet>
                                <excludes>

<exclude>org.apache.jackrabbit:oak-core</exclude>

<exclude>org.apache.jackrabbit:oak-commons</exclude>

<exclude>org.apache.jackrabbit:oak-blob</exclude>

<exclude>com.google.guava:guava</exclude>

<exclude>commons-codec:commons-codec</exclude>
                                    <exclude>commons-io:commons-io</exclude>
                                    <exclude>javax.jcr:jcr</exclude>

<exclude>org.apache.jackrabbit:jackrabbit-api</exclude>

<exclude>org.apache.jackrabbit:jackrabbit-jcr-commons</exclude>

<exclude>org.apache.tika:tika-core</exclude>
                                    <exclude>org.slf4j:slf4j-api</exclude>
                                </excludes>
                            </artifactSet>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <!-- Optional OSGi dependencies, used only when running within OSGi
-->
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.core</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.osgi</groupId>
            <artifactId>org.osgi.compendium</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>biz.aQute.bnd</groupId>
            <artifactId>bndlib</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.felix</groupId>
            <artifactId>org.apache.felix.scr.annotations</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>oak-core</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-core</artifactId>
            <version>${tika.version}</version>
        </dependency>

        <!-- Lucene dependencies -->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-analyzers-common</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-queryparser</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-queries</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-suggest</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-highlighter</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-memory</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-misc</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-facet</artifactId>
            <version>${lucene.version}</version>
        </dependency>

        <!-- Logging -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </dependency>

        <!-- Findbugs annotations -->
        <dependency>
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>jsr305</artifactId>
        </dependency>

        <!-- Test Dependencies -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>oak-core</artifactId>
            <version>${project.version}</version>
            <classifier>tests</classifier>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>oak-jcr</artifactId>
            <version>${project.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>oak-jcr</artifactId>
            <version>${project.version}</version>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>oak-commons</artifactId>
            <version>${project.version}</version>
            <type>test-jar</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>jackrabbit-jcr-tests</artifactId>
            <version>${jackrabbit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>jackrabbit-core</artifactId>
            <version>${jackrabbit.version}</version>
            <classifier>tests</classifier>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-parsers</artifactId>
            <version>${tika.version}</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.sling</groupId>
            <artifactId>org.apache.sling.testing.osgi-mock</artifactId>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-all</artifactId>
            <version>1.3</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>1.10.19</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>


-- 
-Tor

Re: oak-lucene shaded

Posted by Chetan Mehrotra <ch...@gmail.com>.
On Fri, Nov 25, 2016 at 2:33 PM, Torgeir Veimo <to...@gmail.com> wrote:
> I wasn't suggesting oak should adopt this approach at this time, it's
> merely a solution for those that need to combining oak with other code
> (usually elasticsearch) in a non-osgi environment (usually spring).

Okies ... I thought you wanted Oak to adopt the approach and hence the
confusion! Yes approach used should work fine for such cases. May be
we can later add support to produce such a oak-lucene jar

Chetan Mehrotra

Re: oak-lucene shaded

Posted by Torgeir Veimo <to...@gmail.com>.
The module imports the source from the lucene index plugin, modifies the
imports to use the org.shaded package name, and then compiles and includes
the lucene index plugin in the uber-jar itself.

You can see what classes gets included in the resulting jar, it also
renames the services files so that it matches the shaded lucene codecs, so
that initialisation works properly.

I wasn't suggesting oak should adopt this approach at this time, it's
merely a solution for those that need to combining oak with other code
(usually elasticsearch) in a non-osgi environment (usually spring).


On 25 November 2016 at 18:56, Chetan Mehrotra <ch...@gmail.com>
wrote:

> On Fri, Nov 25, 2016 at 2:11 PM, Torgeir Veimo <to...@gmail.com>
> wrote:
> > Which other spi impl depends
> > on the lucene libraries being exposed?
>
> There are currently 2 defined in
> org.apache.jackrabbit.oak.plugins.index.lucene.spi package
>
> Chetan Mehrotra
>



-- 
-Tor

Re: oak-lucene shaded

Posted by Chetan Mehrotra <ch...@gmail.com>.
On Fri, Nov 25, 2016 at 2:11 PM, Torgeir Veimo <to...@gmail.com> wrote:
> Which other spi impl depends
> on the lucene libraries being exposed?

There are currently 2 defined in
org.apache.jackrabbit.oak.plugins.index.lucene.spi package

Chetan Mehrotra

Re: oak-lucene shaded

Posted by Torgeir Veimo <to...@gmail.com>.
Yes I agree this is for special deployments. Which other spi impl depends
on the lucene libraries being exposed?

On 25 November 2016 at 14:32, Chetan Mehrotra <ch...@gmail.com>
wrote:

> Hi Torgeir,
>
> We would not be able shade Lucene classes as they are exported and
> meant to be used by certain SPI implementations. So as of now there is
> no solution for using a different Lucene version in non OSGi world
>
>
> Chetan Mehrotra
>
>
> On Wed, Nov 23, 2016 at 7:15 PM, Torgeir Veimo <to...@gmail.com>
> wrote:
> > Second version, this pom file can be put in a separate directly as a self
> > contained maven artifact and includes oak-lucene remotely.
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> >
> > <!--
> >    Licensed to the Apache Software Foundation (ASF) under one or more
> >    contributor license agreements.  See the NOTICE file distributed with
> >    this work for additional information regarding copyright ownership.
> >    The ASF licenses this file to You under the Apache License, Version
> 2.0
> >    (the "License"); you may not use this file except in compliance with
> >    the License.  You may obtain a copy of the License at
> >
> >        http://www.apache.org/licenses/LICENSE-2.0
> >
> >  Unless required by applicable law or agreed to in writing, software
> >  distributed under the License is distributed on an "AS IS" BASIS,
> >  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> >  See the License for the specific language governing permissions and
> >  limitations under the License.
> > -->
> >
> > <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/maven-
> v4_0_0.xsd
> > ">
> >     <modelVersion>4.0.0</modelVersion>
> >
> >     <groupId>no.karriere</groupId>
> >     <version>0.1-SNAPSHOT</version>
> >     <artifactId>oak-lucene-shaded</artifactId>
> >     <name>Oak Lucene (shaded)</name>
> >     <description>Oak Lucene integration subproject</description>
> >
> >     <properties>
> >         <tika.version>1.5</tika.version>
> >         <lucene.version>4.7.1</lucene.version>
> >         <oak.version>1.4.6</oak.version>
> >     </properties>
> >
> >     <build>
> >         <plugins>
> >             <!-- https://app.camunda.com/jira/browse/CAM-1573 -->
> >             <plugin>
> >                 <groupId>org.apache.maven.plugins</groupId>
> >                 <artifactId>maven-source-plugin</artifactId>
> >                 <version>3.0.1</version>
> >                 <executions>
> >                     <execution>
> >                         <id>generate-sources-for-shade-plugin</id>
> >                         <phase>package</phase>
> >                         <goals>
> >                             <goal>jar-no-fork</goal>
> >                         </goals>
> >                     </execution>
> >                 </executions>
> >             </plugin>
> >             <plugin>
> >                 <groupId>org.apache.maven.plugins</groupId>
> >                 <artifactId>maven-shade-plugin</artifactId>
> >                 <version>3.0.0-SNAPSHOT</version>
> >                 <executions>
> >                     <execution>
> >                         <phase>package</phase>
> >                         <goals>
> >                             <goal>shade</goal>
> >                         </goals>
> >                         <configuration>
> >
> > <!--<createDependencyReducedPom>false</createDependencyReducedPom>-->
> >
> > <promoteTransitiveDependencies>false</promoteTransitiveDependencies>
> >                             <shadeSourcesContent>true</
> shadeSourcesContent>
> >                             <createSourcesJar>true</createSourcesJar>
> >                             <transformers>
> >                                 <transformer
> > implementation="org.apache.maven.plugins.shade.resource.
> ServicesResourceTransformer"/>
> >                             </transformers>
> >                             <relocations>
> >                                 <relocation>
> >                                     <pattern>org.apache.lucene</pattern>
> >
> > <shadedPattern>org.shaded.apache.lucene</shadedPattern>
> >                                 </relocation>
> >                                 <relocation>
> >                                     <pattern>org.tartarus.
> snowball</pattern>
> >
> > <shadedPattern>org.shaded.tartarus.snowball</shadedPattern>
> >                                 </relocation>
> >                             </relocations>
> >                             <artifactSet>
> >                                 <excludes>
> >
> > <exclude>org.apache.jackrabbit:oak-core</exclude>
> >
> > <exclude>org.apache.jackrabbit:oak-commons</exclude>
> >
> > <exclude>org.apache.jackrabbit:oak-blob</exclude>
> >
> > <exclude>com.google.guava:guava</exclude>
> >
> > <exclude>commons-codec:commons-codec</exclude>
> >                                     <exclude>commons-io:commons-
> io</exclude>
> >                                     <exclude>javax.jcr:jcr</exclude>
> >
> > <exclude>org.apache.jackrabbit:jackrabbit-api</exclude>
> >
> > <exclude>org.apache.jackrabbit:jackrabbit-jcr-commons</exclude>
> >
> > <exclude>org.apache.tika:tika-core</exclude>
> >                                     <exclude>org.slf4j:slf4j-api</
> exclude>
> >                                 </excludes>
> >                             </artifactSet>
> >                         </configuration>
> >                     </execution>
> >                 </executions>
> >             </plugin>
> >         </plugins>
> >     </build>
> >
> >     <dependencies>
> >         <dependency>
> >             <groupId>org.apache.jackrabbit</groupId>
> >             <artifactId>oak-core</artifactId>
> >             <version>${oak.version}</version>
> >         </dependency>
> >         <dependency>
> >             <groupId>org.apache.jackrabbit</groupId>
> >             <artifactId>oak-lucene</artifactId>
> >             <version>${oak.version}</version>
> >         </dependency>
> >         <dependency>
> >             <groupId>org.apache.tika</groupId>
> >             <artifactId>tika-core</artifactId>
> >             <version>${tika.version}</version>
> >         </dependency>
> >
> >         <!-- Lucene dependencies -->
> >         <dependency>
> >             <groupId>org.apache.lucene</groupId>
> >             <artifactId>lucene-core</artifactId>
> >             <version>${lucene.version}</version>
> >         </dependency>
> >         <dependency>
> >             <groupId>org.apache.lucene</groupId>
> >             <artifactId>lucene-analyzers-common</artifactId>
> >             <version>${lucene.version}</version>
> >         </dependency>
> >         <dependency>
> >             <groupId>org.apache.lucene</groupId>
> >             <artifactId>lucene-queryparser</artifactId>
> >             <version>${lucene.version}</version>
> >         </dependency>
> >         <dependency>
> >             <groupId>org.apache.lucene</groupId>
> >             <artifactId>lucene-queries</artifactId>
> >             <version>${lucene.version}</version>
> >         </dependency>
> >         <dependency>
> >             <groupId>org.apache.lucene</groupId>
> >             <artifactId>lucene-suggest</artifactId>
> >             <version>${lucene.version}</version>
> >         </dependency>
> >         <dependency>
> >             <groupId>org.apache.lucene</groupId>
> >             <artifactId>lucene-highlighter</artifactId>
> >             <version>${lucene.version}</version>
> >         </dependency>
> >         <dependency>
> >             <groupId>org.apache.lucene</groupId>
> >             <artifactId>lucene-memory</artifactId>
> >             <version>${lucene.version}</version>
> >         </dependency>
> >         <dependency>
> >             <groupId>org.apache.lucene</groupId>
> >             <artifactId>lucene-misc</artifactId>
> >             <version>${lucene.version}</version>
> >         </dependency>
> >         <dependency>
> >             <groupId>org.apache.lucene</groupId>
> >             <artifactId>lucene-facet</artifactId>
> >             <version>${lucene.version}</version>
> >         </dependency>
> >
> >         <dependency>
> >             <groupId>org.apache.tika</groupId>
> >             <artifactId>tika-parsers</artifactId>
> >             <version>${tika.version}</version>
> >             <scope>test</scope>
> >             <exclusions>
> >                 <exclusion>
> >                     <groupId>commons-logging</groupId>
> >                     <artifactId>commons-logging</artifactId>
> >                 </exclusion>
> >             </exclusions>
> >         </dependency>
> >     </dependencies>
> >
> >     <pluginRepositories>
> >         <pluginRepository>
> >             <id>org.apache</id>
> >             <name>Apache snapshots</name>
> >             <url>http://repository.apache.org/content/repositories/
> snapshots
> > </url>
> >             <snapshots>
> >                 <enabled>true</enabled>
> >             </snapshots>
> >         </pluginRepository>
> >     </pluginRepositories>
> > </project>
> >
> >
> > On 15 November 2016 at 11:12, Torgeir Veimo <to...@gmail.com>
> wrote:
> >
> >> I'm in need of running oak in a non-osgi environment with a more recent
> >> version of lucene already on the classpath, so I've experimented with
> using
> >> the maven shade plugin to embed a shaded lucene jar inside the
> oak-lucene
> >> jar.
> >>
> >> I'm not very familiar with the shade plugin, so there might be better
> ways
> >> of doing this, but here's a modified pom.xml that will built to an
> artifact
> >> that can be included with the id org.apache.jackrabbit:oak-
> lucene-shaded
> >>
> >> This might be useful for someone.
> >>
> >> <?xml version="1.0" encoding="UTF-8"?>
> >>
> >> <!--
> >>    Licensed to the Apache Software Foundation (ASF) under one or more
> >>    contributor license agreements.  See the NOTICE file distributed with
> >>    this work for additional information regarding copyright ownership.
> >>    The ASF licenses this file to You under the Apache License, Version
> 2.0
> >>    (the "License"); you may not use this file except in compliance with
> >>    the License.  You may obtain a copy of the License at
> >>
> >>        http://www.apache.org/licenses/LICENSE-2.0
> >>
> >>  Unless required by applicable law or agreed to in writing, software
> >>  distributed under the License is distributed on an "AS IS" BASIS,
> >>  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> >>  See the License for the specific language governing permissions and
> >>  limitations under the License.
> >> -->
> >>
> >> <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/maven-v4_0_0.xsd ">
> >>     <modelVersion>4.0.0</modelVersion>
> >>
> >>     <parent>
> >>         <groupId>org.apache.jackrabbit</groupId>
> >>         <artifactId>oak-parent</artifactId>
> >>         <version>1.4.6</version>
> >>         <relativePath>../oak-parent/pom.xml</relativePath>
> >>     </parent>
> >>
> >>     <artifactId>oak-lucene-shaded</artifactId>
> >>     <name>Oak Lucene (shaded)</name>
> >>     <!--<packaging>bundle</packaging>-->
> >>     <description>Oak Lucene integration subproject</description>
> >>
> >>     <properties>
> >>         <tika.version>1.5</tika.version>
> >>     </properties>
> >>
> >>     <build>
> >>         <plugins>
> >>             <!-- https://app.camunda.com/jira/browse/CAM-1573 -->
> >>             <plugin>
> >>                 <groupId>org.apache.maven.plugins</groupId>
> >>                 <artifactId>maven-source-plugin</artifactId>
> >>                 <executions>
> >>                     <execution>
> >>                         <id>generate-sources-for-shade-plugin</id>
> >>                         <phase>package</phase>
> >>                         <goals>
> >>                             <goal>jar-no-fork</goal>
> >>                         </goals>
> >>                     </execution>
> >>                 </executions>
> >>             </plugin>
> >>             <plugin>
> >>                 <groupId>org.apache.maven.plugins</groupId>
> >>                 <artifactId>maven-shade-plugin</artifactId>
> >>                 <version>2.4.3</version>
> >>                 <executions>
> >>                     <execution>
> >>                         <phase>package</phase>
> >>                         <goals>
> >>                             <goal>shade</goal>
> >>                         </goals>
> >>                         <configuration>
> >>                             <!--<minimizeJar>true</minimizeJar>-->
> >>                             <promoteTransitiveDependencies>false</
> >> promoteTransitiveDependencies>
> >>                             <shadeSourcesContent>true</
> >> shadeSourcesContent>
> >>                             <createSourcesJar>true</createSourcesJar>
> >>                             <shadeSourcesContent>true</
> >> shadeSourcesContent>
> >>
> >>                             <relocations>
> >>                                 <relocation>
> >>                                     <pattern>org.apache.lucene</
> pattern>
> >>                                     <shadedPattern>org.shaded.
> >> apache.lucene</shadedPattern>
> >>                                 </relocation>
> >>                                 <relocation>
> >>                                     <pattern>org.tartarus.
> >> snowball</pattern>
> >>                                     <shadedPattern>org.shaded.
> >> tartarus.snowball</shadedPattern>
> >>                                 </relocation>
> >>                             </relocations>
> >>                             <artifactSet>
> >>                                 <excludes>
> >>                                     <exclude>org.apache.
> >> jackrabbit:oak-core</exclude>
> >>                                     <exclude>org.apache.
> >> jackrabbit:oak-commons</exclude>
> >>                                     <exclude>org.apache.
> >> jackrabbit:oak-blob</exclude>
> >>                                     <exclude>com.google.guava:
> >> guava</exclude>
> >>                                     <exclude>commons-codec:
> >> commons-codec</exclude>
> >>                                     <exclude>commons-io:commons-
> >> io</exclude>
> >>                                     <exclude>javax.jcr:jcr</exclude>
> >>                                     <exclude>org.apache.
> >> jackrabbit:jackrabbit-api</exclude>
> >>                                     <exclude>org.apache.
> >> jackrabbit:jackrabbit-jcr-commons</exclude>
> >>                                     <exclude>org.apache.tika:tika-
> >> core</exclude>
> >>                                     <exclude>org.slf4j:slf4j-api</
> exclude>
> >>                                 </excludes>
> >>                             </artifactSet>
> >>                         </configuration>
> >>                     </execution>
> >>                 </executions>
> >>             </plugin>
> >>         </plugins>
> >>     </build>
> >>
> >>     <dependencies>
> >>         <!-- Optional OSGi dependencies, used only when running within
> >> OSGi -->
> >>         <dependency>
> >>             <groupId>org.osgi</groupId>
> >>             <artifactId>org.osgi.core</artifactId>
> >>             <scope>provided</scope>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.osgi</groupId>
> >>             <artifactId>org.osgi.compendium</artifactId>
> >>             <scope>provided</scope>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>biz.aQute.bnd</groupId>
> >>             <artifactId>bndlib</artifactId>
> >>             <scope>provided</scope>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.felix</groupId>
> >>             <artifactId>org.apache.felix.scr.annotations</artifactId>
> >>             <scope>provided</scope>
> >>         </dependency>
> >>
> >>         <dependency>
> >>             <groupId>org.apache.jackrabbit</groupId>
> >>             <artifactId>oak-core</artifactId>
> >>             <version>${project.version}</version>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.tika</groupId>
> >>             <artifactId>tika-core</artifactId>
> >>             <version>${tika.version}</version>
> >>         </dependency>
> >>
> >>         <!-- Lucene dependencies -->
> >>         <dependency>
> >>             <groupId>org.apache.lucene</groupId>
> >>             <artifactId>lucene-core</artifactId>
> >>             <version>${lucene.version}</version>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.lucene</groupId>
> >>             <artifactId>lucene-analyzers-common</artifactId>
> >>             <version>${lucene.version}</version>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.lucene</groupId>
> >>             <artifactId>lucene-queryparser</artifactId>
> >>             <version>${lucene.version}</version>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.lucene</groupId>
> >>             <artifactId>lucene-queries</artifactId>
> >>             <version>${lucene.version}</version>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.lucene</groupId>
> >>             <artifactId>lucene-suggest</artifactId>
> >>             <version>${lucene.version}</version>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.lucene</groupId>
> >>             <artifactId>lucene-highlighter</artifactId>
> >>             <version>${lucene.version}</version>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.lucene</groupId>
> >>             <artifactId>lucene-memory</artifactId>
> >>             <version>${lucene.version}</version>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.lucene</groupId>
> >>             <artifactId>lucene-misc</artifactId>
> >>             <version>${lucene.version}</version>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.lucene</groupId>
> >>             <artifactId>lucene-facet</artifactId>
> >>             <version>${lucene.version}</version>
> >>         </dependency>
> >>
> >>         <!-- Logging -->
> >>         <dependency>
> >>             <groupId>org.slf4j</groupId>
> >>             <artifactId>slf4j-api</artifactId>
> >>         </dependency>
> >>
> >>         <!-- Findbugs annotations -->
> >>         <dependency>
> >>             <groupId>com.google.code.findbugs</groupId>
> >>             <artifactId>jsr305</artifactId>
> >>         </dependency>
> >>
> >>         <!-- Test Dependencies -->
> >>         <dependency>
> >>             <groupId>ch.qos.logback</groupId>
> >>             <artifactId>logback-classic</artifactId>
> >>             <scope>test</scope>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>junit</groupId>
> >>             <artifactId>junit</artifactId>
> >>             <scope>test</scope>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.mongodb</groupId>
> >>             <artifactId>mongo-java-driver</artifactId>
> >>             <scope>test</scope>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.jackrabbit</groupId>
> >>             <artifactId>oak-core</artifactId>
> >>             <version>${project.version}</version>
> >>             <classifier>tests</classifier>
> >>             <scope>test</scope>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.jackrabbit</groupId>
> >>             <artifactId>oak-jcr</artifactId>
> >>             <version>${project.version}</version>
> >>             <scope>test</scope>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.jackrabbit</groupId>
> >>             <artifactId>oak-jcr</artifactId>
> >>             <version>${project.version}</version>
> >>             <type>test-jar</type>
> >>             <scope>test</scope>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.jackrabbit</groupId>
> >>             <artifactId>oak-commons</artifactId>
> >>             <version>${project.version}</version>
> >>             <type>test-jar</type>
> >>             <scope>test</scope>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.jackrabbit</groupId>
> >>             <artifactId>jackrabbit-jcr-tests</artifactId>
> >>             <version>${jackrabbit.version}</version>
> >>             <scope>test</scope>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.jackrabbit</groupId>
> >>             <artifactId>jackrabbit-core</artifactId>
> >>             <version>${jackrabbit.version}</version>
> >>             <classifier>tests</classifier>
> >>             <scope>test</scope>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.tika</groupId>
> >>             <artifactId>tika-parsers</artifactId>
> >>             <version>${tika.version}</version>
> >>             <scope>test</scope>
> >>             <exclusions>
> >>                 <exclusion>
> >>                     <groupId>commons-logging</groupId>
> >>                     <artifactId>commons-logging</artifactId>
> >>                 </exclusion>
> >>             </exclusions>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.apache.sling</groupId>
> >>             <artifactId>org.apache.sling.testing.osgi-mock</artifactId>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.hamcrest</groupId>
> >>             <artifactId>hamcrest-all</artifactId>
> >>             <version>1.3</version>
> >>             <scope>test</scope>
> >>         </dependency>
> >>         <dependency>
> >>             <groupId>org.mockito</groupId>
> >>             <artifactId>mockito-core</artifactId>
> >>             <version>1.10.19</version>
> >>             <scope>test</scope>
> >>         </dependency>
> >>     </dependencies>
> >> </project>
> >>
> >>
> >> --
> >> -Tor
> >>
> >
> >
> >
> > --
> > -Tor
>



-- 
-Tor

Re: oak-lucene shaded

Posted by Chetan Mehrotra <ch...@gmail.com>.
Hi Torgeir,

We would not be able shade Lucene classes as they are exported and
meant to be used by certain SPI implementations. So as of now there is
no solution for using a different Lucene version in non OSGi world


Chetan Mehrotra


On Wed, Nov 23, 2016 at 7:15 PM, Torgeir Veimo <to...@gmail.com> wrote:
> Second version, this pom file can be put in a separate directly as a self
> contained maven artifact and includes oak-lucene remotely.
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <!--
>    Licensed to the Apache Software Foundation (ASF) under one or more
>    contributor license agreements.  See the NOTICE file distributed with
>    this work for additional information regarding copyright ownership.
>    The ASF licenses this file to You under the Apache License, Version 2.0
>    (the "License"); you may not use this file except in compliance with
>    the License.  You may obtain a copy of the License at
>
>        http://www.apache.org/licenses/LICENSE-2.0
>
>  Unless required by applicable law or agreed to in writing, software
>  distributed under the License is distributed on an "AS IS" BASIS,
>  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>  See the License for the specific language governing permissions and
>  limitations under the License.
> -->
>
> <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/maven-v4_0_0.xsd
> ">
>     <modelVersion>4.0.0</modelVersion>
>
>     <groupId>no.karriere</groupId>
>     <version>0.1-SNAPSHOT</version>
>     <artifactId>oak-lucene-shaded</artifactId>
>     <name>Oak Lucene (shaded)</name>
>     <description>Oak Lucene integration subproject</description>
>
>     <properties>
>         <tika.version>1.5</tika.version>
>         <lucene.version>4.7.1</lucene.version>
>         <oak.version>1.4.6</oak.version>
>     </properties>
>
>     <build>
>         <plugins>
>             <!-- https://app.camunda.com/jira/browse/CAM-1573 -->
>             <plugin>
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-source-plugin</artifactId>
>                 <version>3.0.1</version>
>                 <executions>
>                     <execution>
>                         <id>generate-sources-for-shade-plugin</id>
>                         <phase>package</phase>
>                         <goals>
>                             <goal>jar-no-fork</goal>
>                         </goals>
>                     </execution>
>                 </executions>
>             </plugin>
>             <plugin>
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-shade-plugin</artifactId>
>                 <version>3.0.0-SNAPSHOT</version>
>                 <executions>
>                     <execution>
>                         <phase>package</phase>
>                         <goals>
>                             <goal>shade</goal>
>                         </goals>
>                         <configuration>
>
> <!--<createDependencyReducedPom>false</createDependencyReducedPom>-->
>
> <promoteTransitiveDependencies>false</promoteTransitiveDependencies>
>                             <shadeSourcesContent>true</shadeSourcesContent>
>                             <createSourcesJar>true</createSourcesJar>
>                             <transformers>
>                                 <transformer
> implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
>                             </transformers>
>                             <relocations>
>                                 <relocation>
>                                     <pattern>org.apache.lucene</pattern>
>
> <shadedPattern>org.shaded.apache.lucene</shadedPattern>
>                                 </relocation>
>                                 <relocation>
>                                     <pattern>org.tartarus.snowball</pattern>
>
> <shadedPattern>org.shaded.tartarus.snowball</shadedPattern>
>                                 </relocation>
>                             </relocations>
>                             <artifactSet>
>                                 <excludes>
>
> <exclude>org.apache.jackrabbit:oak-core</exclude>
>
> <exclude>org.apache.jackrabbit:oak-commons</exclude>
>
> <exclude>org.apache.jackrabbit:oak-blob</exclude>
>
> <exclude>com.google.guava:guava</exclude>
>
> <exclude>commons-codec:commons-codec</exclude>
>                                     <exclude>commons-io:commons-io</exclude>
>                                     <exclude>javax.jcr:jcr</exclude>
>
> <exclude>org.apache.jackrabbit:jackrabbit-api</exclude>
>
> <exclude>org.apache.jackrabbit:jackrabbit-jcr-commons</exclude>
>
> <exclude>org.apache.tika:tika-core</exclude>
>                                     <exclude>org.slf4j:slf4j-api</exclude>
>                                 </excludes>
>                             </artifactSet>
>                         </configuration>
>                     </execution>
>                 </executions>
>             </plugin>
>         </plugins>
>     </build>
>
>     <dependencies>
>         <dependency>
>             <groupId>org.apache.jackrabbit</groupId>
>             <artifactId>oak-core</artifactId>
>             <version>${oak.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.jackrabbit</groupId>
>             <artifactId>oak-lucene</artifactId>
>             <version>${oak.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.tika</groupId>
>             <artifactId>tika-core</artifactId>
>             <version>${tika.version}</version>
>         </dependency>
>
>         <!-- Lucene dependencies -->
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-core</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-analyzers-common</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-queryparser</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-queries</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-suggest</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-highlighter</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-memory</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-misc</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-facet</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>
>         <dependency>
>             <groupId>org.apache.tika</groupId>
>             <artifactId>tika-parsers</artifactId>
>             <version>${tika.version}</version>
>             <scope>test</scope>
>             <exclusions>
>                 <exclusion>
>                     <groupId>commons-logging</groupId>
>                     <artifactId>commons-logging</artifactId>
>                 </exclusion>
>             </exclusions>
>         </dependency>
>     </dependencies>
>
>     <pluginRepositories>
>         <pluginRepository>
>             <id>org.apache</id>
>             <name>Apache snapshots</name>
>             <url>http://repository.apache.org/content/repositories/snapshots
> </url>
>             <snapshots>
>                 <enabled>true</enabled>
>             </snapshots>
>         </pluginRepository>
>     </pluginRepositories>
> </project>
>
>
> On 15 November 2016 at 11:12, Torgeir Veimo <to...@gmail.com> wrote:
>
>> I'm in need of running oak in a non-osgi environment with a more recent
>> version of lucene already on the classpath, so I've experimented with using
>> the maven shade plugin to embed a shaded lucene jar inside the oak-lucene
>> jar.
>>
>> I'm not very familiar with the shade plugin, so there might be better ways
>> of doing this, but here's a modified pom.xml that will built to an artifact
>> that can be included with the id org.apache.jackrabbit:oak-lucene-shaded
>>
>> This might be useful for someone.
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>>
>> <!--
>>    Licensed to the Apache Software Foundation (ASF) under one or more
>>    contributor license agreements.  See the NOTICE file distributed with
>>    this work for additional information regarding copyright ownership.
>>    The ASF licenses this file to You under the Apache License, Version 2.0
>>    (the "License"); you may not use this file except in compliance with
>>    the License.  You may obtain a copy of the License at
>>
>>        http://www.apache.org/licenses/LICENSE-2.0
>>
>>  Unless required by applicable law or agreed to in writing, software
>>  distributed under the License is distributed on an "AS IS" BASIS,
>>  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>>  See the License for the specific language governing permissions and
>>  limitations under the License.
>> -->
>>
>> <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/maven-v4_0_0.xsd ">
>>     <modelVersion>4.0.0</modelVersion>
>>
>>     <parent>
>>         <groupId>org.apache.jackrabbit</groupId>
>>         <artifactId>oak-parent</artifactId>
>>         <version>1.4.6</version>
>>         <relativePath>../oak-parent/pom.xml</relativePath>
>>     </parent>
>>
>>     <artifactId>oak-lucene-shaded</artifactId>
>>     <name>Oak Lucene (shaded)</name>
>>     <!--<packaging>bundle</packaging>-->
>>     <description>Oak Lucene integration subproject</description>
>>
>>     <properties>
>>         <tika.version>1.5</tika.version>
>>     </properties>
>>
>>     <build>
>>         <plugins>
>>             <!-- https://app.camunda.com/jira/browse/CAM-1573 -->
>>             <plugin>
>>                 <groupId>org.apache.maven.plugins</groupId>
>>                 <artifactId>maven-source-plugin</artifactId>
>>                 <executions>
>>                     <execution>
>>                         <id>generate-sources-for-shade-plugin</id>
>>                         <phase>package</phase>
>>                         <goals>
>>                             <goal>jar-no-fork</goal>
>>                         </goals>
>>                     </execution>
>>                 </executions>
>>             </plugin>
>>             <plugin>
>>                 <groupId>org.apache.maven.plugins</groupId>
>>                 <artifactId>maven-shade-plugin</artifactId>
>>                 <version>2.4.3</version>
>>                 <executions>
>>                     <execution>
>>                         <phase>package</phase>
>>                         <goals>
>>                             <goal>shade</goal>
>>                         </goals>
>>                         <configuration>
>>                             <!--<minimizeJar>true</minimizeJar>-->
>>                             <promoteTransitiveDependencies>false</
>> promoteTransitiveDependencies>
>>                             <shadeSourcesContent>true</
>> shadeSourcesContent>
>>                             <createSourcesJar>true</createSourcesJar>
>>                             <shadeSourcesContent>true</
>> shadeSourcesContent>
>>
>>                             <relocations>
>>                                 <relocation>
>>                                     <pattern>org.apache.lucene</pattern>
>>                                     <shadedPattern>org.shaded.
>> apache.lucene</shadedPattern>
>>                                 </relocation>
>>                                 <relocation>
>>                                     <pattern>org.tartarus.
>> snowball</pattern>
>>                                     <shadedPattern>org.shaded.
>> tartarus.snowball</shadedPattern>
>>                                 </relocation>
>>                             </relocations>
>>                             <artifactSet>
>>                                 <excludes>
>>                                     <exclude>org.apache.
>> jackrabbit:oak-core</exclude>
>>                                     <exclude>org.apache.
>> jackrabbit:oak-commons</exclude>
>>                                     <exclude>org.apache.
>> jackrabbit:oak-blob</exclude>
>>                                     <exclude>com.google.guava:
>> guava</exclude>
>>                                     <exclude>commons-codec:
>> commons-codec</exclude>
>>                                     <exclude>commons-io:commons-
>> io</exclude>
>>                                     <exclude>javax.jcr:jcr</exclude>
>>                                     <exclude>org.apache.
>> jackrabbit:jackrabbit-api</exclude>
>>                                     <exclude>org.apache.
>> jackrabbit:jackrabbit-jcr-commons</exclude>
>>                                     <exclude>org.apache.tika:tika-
>> core</exclude>
>>                                     <exclude>org.slf4j:slf4j-api</exclude>
>>                                 </excludes>
>>                             </artifactSet>
>>                         </configuration>
>>                     </execution>
>>                 </executions>
>>             </plugin>
>>         </plugins>
>>     </build>
>>
>>     <dependencies>
>>         <!-- Optional OSGi dependencies, used only when running within
>> OSGi -->
>>         <dependency>
>>             <groupId>org.osgi</groupId>
>>             <artifactId>org.osgi.core</artifactId>
>>             <scope>provided</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.osgi</groupId>
>>             <artifactId>org.osgi.compendium</artifactId>
>>             <scope>provided</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>biz.aQute.bnd</groupId>
>>             <artifactId>bndlib</artifactId>
>>             <scope>provided</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.felix</groupId>
>>             <artifactId>org.apache.felix.scr.annotations</artifactId>
>>             <scope>provided</scope>
>>         </dependency>
>>
>>         <dependency>
>>             <groupId>org.apache.jackrabbit</groupId>
>>             <artifactId>oak-core</artifactId>
>>             <version>${project.version}</version>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.tika</groupId>
>>             <artifactId>tika-core</artifactId>
>>             <version>${tika.version}</version>
>>         </dependency>
>>
>>         <!-- Lucene dependencies -->
>>         <dependency>
>>             <groupId>org.apache.lucene</groupId>
>>             <artifactId>lucene-core</artifactId>
>>             <version>${lucene.version}</version>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.lucene</groupId>
>>             <artifactId>lucene-analyzers-common</artifactId>
>>             <version>${lucene.version}</version>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.lucene</groupId>
>>             <artifactId>lucene-queryparser</artifactId>
>>             <version>${lucene.version}</version>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.lucene</groupId>
>>             <artifactId>lucene-queries</artifactId>
>>             <version>${lucene.version}</version>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.lucene</groupId>
>>             <artifactId>lucene-suggest</artifactId>
>>             <version>${lucene.version}</version>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.lucene</groupId>
>>             <artifactId>lucene-highlighter</artifactId>
>>             <version>${lucene.version}</version>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.lucene</groupId>
>>             <artifactId>lucene-memory</artifactId>
>>             <version>${lucene.version}</version>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.lucene</groupId>
>>             <artifactId>lucene-misc</artifactId>
>>             <version>${lucene.version}</version>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.lucene</groupId>
>>             <artifactId>lucene-facet</artifactId>
>>             <version>${lucene.version}</version>
>>         </dependency>
>>
>>         <!-- Logging -->
>>         <dependency>
>>             <groupId>org.slf4j</groupId>
>>             <artifactId>slf4j-api</artifactId>
>>         </dependency>
>>
>>         <!-- Findbugs annotations -->
>>         <dependency>
>>             <groupId>com.google.code.findbugs</groupId>
>>             <artifactId>jsr305</artifactId>
>>         </dependency>
>>
>>         <!-- Test Dependencies -->
>>         <dependency>
>>             <groupId>ch.qos.logback</groupId>
>>             <artifactId>logback-classic</artifactId>
>>             <scope>test</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>junit</groupId>
>>             <artifactId>junit</artifactId>
>>             <scope>test</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.mongodb</groupId>
>>             <artifactId>mongo-java-driver</artifactId>
>>             <scope>test</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.jackrabbit</groupId>
>>             <artifactId>oak-core</artifactId>
>>             <version>${project.version}</version>
>>             <classifier>tests</classifier>
>>             <scope>test</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.jackrabbit</groupId>
>>             <artifactId>oak-jcr</artifactId>
>>             <version>${project.version}</version>
>>             <scope>test</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.jackrabbit</groupId>
>>             <artifactId>oak-jcr</artifactId>
>>             <version>${project.version}</version>
>>             <type>test-jar</type>
>>             <scope>test</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.jackrabbit</groupId>
>>             <artifactId>oak-commons</artifactId>
>>             <version>${project.version}</version>
>>             <type>test-jar</type>
>>             <scope>test</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.jackrabbit</groupId>
>>             <artifactId>jackrabbit-jcr-tests</artifactId>
>>             <version>${jackrabbit.version}</version>
>>             <scope>test</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.jackrabbit</groupId>
>>             <artifactId>jackrabbit-core</artifactId>
>>             <version>${jackrabbit.version}</version>
>>             <classifier>tests</classifier>
>>             <scope>test</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.tika</groupId>
>>             <artifactId>tika-parsers</artifactId>
>>             <version>${tika.version}</version>
>>             <scope>test</scope>
>>             <exclusions>
>>                 <exclusion>
>>                     <groupId>commons-logging</groupId>
>>                     <artifactId>commons-logging</artifactId>
>>                 </exclusion>
>>             </exclusions>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.apache.sling</groupId>
>>             <artifactId>org.apache.sling.testing.osgi-mock</artifactId>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.hamcrest</groupId>
>>             <artifactId>hamcrest-all</artifactId>
>>             <version>1.3</version>
>>             <scope>test</scope>
>>         </dependency>
>>         <dependency>
>>             <groupId>org.mockito</groupId>
>>             <artifactId>mockito-core</artifactId>
>>             <version>1.10.19</version>
>>             <scope>test</scope>
>>         </dependency>
>>     </dependencies>
>> </project>
>>
>>
>> --
>> -Tor
>>
>
>
>
> --
> -Tor

Re: oak-lucene shaded

Posted by Torgeir Veimo <to...@gmail.com>.
Second version, this pom file can be put in a separate directly as a self
contained maven artifact and includes oak-lucene remotely.

<?xml version="1.0" encoding="UTF-8"?>

<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<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/maven-v4_0_0.xsd
">
    <modelVersion>4.0.0</modelVersion>

    <groupId>no.karriere</groupId>
    <version>0.1-SNAPSHOT</version>
    <artifactId>oak-lucene-shaded</artifactId>
    <name>Oak Lucene (shaded)</name>
    <description>Oak Lucene integration subproject</description>

    <properties>
        <tika.version>1.5</tika.version>
        <lucene.version>4.7.1</lucene.version>
        <oak.version>1.4.6</oak.version>
    </properties>

    <build>
        <plugins>
            <!-- https://app.camunda.com/jira/browse/CAM-1573 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.0.1</version>
                <executions>
                    <execution>
                        <id>generate-sources-for-shade-plugin</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.0.0-SNAPSHOT</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>

<!--<createDependencyReducedPom>false</createDependencyReducedPom>-->

<promoteTransitiveDependencies>false</promoteTransitiveDependencies>
                            <shadeSourcesContent>true</shadeSourcesContent>
                            <createSourcesJar>true</createSourcesJar>
                            <transformers>
                                <transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                            </transformers>
                            <relocations>
                                <relocation>
                                    <pattern>org.apache.lucene</pattern>

<shadedPattern>org.shaded.apache.lucene</shadedPattern>
                                </relocation>
                                <relocation>
                                    <pattern>org.tartarus.snowball</pattern>

<shadedPattern>org.shaded.tartarus.snowball</shadedPattern>
                                </relocation>
                            </relocations>
                            <artifactSet>
                                <excludes>

<exclude>org.apache.jackrabbit:oak-core</exclude>

<exclude>org.apache.jackrabbit:oak-commons</exclude>

<exclude>org.apache.jackrabbit:oak-blob</exclude>

<exclude>com.google.guava:guava</exclude>

<exclude>commons-codec:commons-codec</exclude>
                                    <exclude>commons-io:commons-io</exclude>
                                    <exclude>javax.jcr:jcr</exclude>

<exclude>org.apache.jackrabbit:jackrabbit-api</exclude>

<exclude>org.apache.jackrabbit:jackrabbit-jcr-commons</exclude>

<exclude>org.apache.tika:tika-core</exclude>
                                    <exclude>org.slf4j:slf4j-api</exclude>
                                </excludes>
                            </artifactSet>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>oak-core</artifactId>
            <version>${oak.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.jackrabbit</groupId>
            <artifactId>oak-lucene</artifactId>
            <version>${oak.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-core</artifactId>
            <version>${tika.version}</version>
        </dependency>

        <!-- Lucene dependencies -->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-analyzers-common</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-queryparser</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-queries</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-suggest</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-highlighter</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-memory</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-misc</artifactId>
            <version>${lucene.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-facet</artifactId>
            <version>${lucene.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-parsers</artifactId>
            <version>${tika.version}</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <pluginRepositories>
        <pluginRepository>
            <id>org.apache</id>
            <name>Apache snapshots</name>
            <url>http://repository.apache.org/content/repositories/snapshots
</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
</project>


On 15 November 2016 at 11:12, Torgeir Veimo <to...@gmail.com> wrote:

> I'm in need of running oak in a non-osgi environment with a more recent
> version of lucene already on the classpath, so I've experimented with using
> the maven shade plugin to embed a shaded lucene jar inside the oak-lucene
> jar.
>
> I'm not very familiar with the shade plugin, so there might be better ways
> of doing this, but here's a modified pom.xml that will built to an artifact
> that can be included with the id org.apache.jackrabbit:oak-lucene-shaded
>
> This might be useful for someone.
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <!--
>    Licensed to the Apache Software Foundation (ASF) under one or more
>    contributor license agreements.  See the NOTICE file distributed with
>    this work for additional information regarding copyright ownership.
>    The ASF licenses this file to You under the Apache License, Version 2.0
>    (the "License"); you may not use this file except in compliance with
>    the License.  You may obtain a copy of the License at
>
>        http://www.apache.org/licenses/LICENSE-2.0
>
>  Unless required by applicable law or agreed to in writing, software
>  distributed under the License is distributed on an "AS IS" BASIS,
>  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>  See the License for the specific language governing permissions and
>  limitations under the License.
> -->
>
> <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/maven-v4_0_0.xsd ">
>     <modelVersion>4.0.0</modelVersion>
>
>     <parent>
>         <groupId>org.apache.jackrabbit</groupId>
>         <artifactId>oak-parent</artifactId>
>         <version>1.4.6</version>
>         <relativePath>../oak-parent/pom.xml</relativePath>
>     </parent>
>
>     <artifactId>oak-lucene-shaded</artifactId>
>     <name>Oak Lucene (shaded)</name>
>     <!--<packaging>bundle</packaging>-->
>     <description>Oak Lucene integration subproject</description>
>
>     <properties>
>         <tika.version>1.5</tika.version>
>     </properties>
>
>     <build>
>         <plugins>
>             <!-- https://app.camunda.com/jira/browse/CAM-1573 -->
>             <plugin>
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-source-plugin</artifactId>
>                 <executions>
>                     <execution>
>                         <id>generate-sources-for-shade-plugin</id>
>                         <phase>package</phase>
>                         <goals>
>                             <goal>jar-no-fork</goal>
>                         </goals>
>                     </execution>
>                 </executions>
>             </plugin>
>             <plugin>
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-shade-plugin</artifactId>
>                 <version>2.4.3</version>
>                 <executions>
>                     <execution>
>                         <phase>package</phase>
>                         <goals>
>                             <goal>shade</goal>
>                         </goals>
>                         <configuration>
>                             <!--<minimizeJar>true</minimizeJar>-->
>                             <promoteTransitiveDependencies>false</
> promoteTransitiveDependencies>
>                             <shadeSourcesContent>true</
> shadeSourcesContent>
>                             <createSourcesJar>true</createSourcesJar>
>                             <shadeSourcesContent>true</
> shadeSourcesContent>
>
>                             <relocations>
>                                 <relocation>
>                                     <pattern>org.apache.lucene</pattern>
>                                     <shadedPattern>org.shaded.
> apache.lucene</shadedPattern>
>                                 </relocation>
>                                 <relocation>
>                                     <pattern>org.tartarus.
> snowball</pattern>
>                                     <shadedPattern>org.shaded.
> tartarus.snowball</shadedPattern>
>                                 </relocation>
>                             </relocations>
>                             <artifactSet>
>                                 <excludes>
>                                     <exclude>org.apache.
> jackrabbit:oak-core</exclude>
>                                     <exclude>org.apache.
> jackrabbit:oak-commons</exclude>
>                                     <exclude>org.apache.
> jackrabbit:oak-blob</exclude>
>                                     <exclude>com.google.guava:
> guava</exclude>
>                                     <exclude>commons-codec:
> commons-codec</exclude>
>                                     <exclude>commons-io:commons-
> io</exclude>
>                                     <exclude>javax.jcr:jcr</exclude>
>                                     <exclude>org.apache.
> jackrabbit:jackrabbit-api</exclude>
>                                     <exclude>org.apache.
> jackrabbit:jackrabbit-jcr-commons</exclude>
>                                     <exclude>org.apache.tika:tika-
> core</exclude>
>                                     <exclude>org.slf4j:slf4j-api</exclude>
>                                 </excludes>
>                             </artifactSet>
>                         </configuration>
>                     </execution>
>                 </executions>
>             </plugin>
>         </plugins>
>     </build>
>
>     <dependencies>
>         <!-- Optional OSGi dependencies, used only when running within
> OSGi -->
>         <dependency>
>             <groupId>org.osgi</groupId>
>             <artifactId>org.osgi.core</artifactId>
>             <scope>provided</scope>
>         </dependency>
>         <dependency>
>             <groupId>org.osgi</groupId>
>             <artifactId>org.osgi.compendium</artifactId>
>             <scope>provided</scope>
>         </dependency>
>         <dependency>
>             <groupId>biz.aQute.bnd</groupId>
>             <artifactId>bndlib</artifactId>
>             <scope>provided</scope>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.felix</groupId>
>             <artifactId>org.apache.felix.scr.annotations</artifactId>
>             <scope>provided</scope>
>         </dependency>
>
>         <dependency>
>             <groupId>org.apache.jackrabbit</groupId>
>             <artifactId>oak-core</artifactId>
>             <version>${project.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.tika</groupId>
>             <artifactId>tika-core</artifactId>
>             <version>${tika.version}</version>
>         </dependency>
>
>         <!-- Lucene dependencies -->
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-core</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-analyzers-common</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-queryparser</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-queries</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-suggest</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-highlighter</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-memory</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-misc</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.lucene</groupId>
>             <artifactId>lucene-facet</artifactId>
>             <version>${lucene.version}</version>
>         </dependency>
>
>         <!-- Logging -->
>         <dependency>
>             <groupId>org.slf4j</groupId>
>             <artifactId>slf4j-api</artifactId>
>         </dependency>
>
>         <!-- Findbugs annotations -->
>         <dependency>
>             <groupId>com.google.code.findbugs</groupId>
>             <artifactId>jsr305</artifactId>
>         </dependency>
>
>         <!-- Test Dependencies -->
>         <dependency>
>             <groupId>ch.qos.logback</groupId>
>             <artifactId>logback-classic</artifactId>
>             <scope>test</scope>
>         </dependency>
>         <dependency>
>             <groupId>junit</groupId>
>             <artifactId>junit</artifactId>
>             <scope>test</scope>
>         </dependency>
>         <dependency>
>             <groupId>org.mongodb</groupId>
>             <artifactId>mongo-java-driver</artifactId>
>             <scope>test</scope>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.jackrabbit</groupId>
>             <artifactId>oak-core</artifactId>
>             <version>${project.version}</version>
>             <classifier>tests</classifier>
>             <scope>test</scope>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.jackrabbit</groupId>
>             <artifactId>oak-jcr</artifactId>
>             <version>${project.version}</version>
>             <scope>test</scope>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.jackrabbit</groupId>
>             <artifactId>oak-jcr</artifactId>
>             <version>${project.version}</version>
>             <type>test-jar</type>
>             <scope>test</scope>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.jackrabbit</groupId>
>             <artifactId>oak-commons</artifactId>
>             <version>${project.version}</version>
>             <type>test-jar</type>
>             <scope>test</scope>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.jackrabbit</groupId>
>             <artifactId>jackrabbit-jcr-tests</artifactId>
>             <version>${jackrabbit.version}</version>
>             <scope>test</scope>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.jackrabbit</groupId>
>             <artifactId>jackrabbit-core</artifactId>
>             <version>${jackrabbit.version}</version>
>             <classifier>tests</classifier>
>             <scope>test</scope>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.tika</groupId>
>             <artifactId>tika-parsers</artifactId>
>             <version>${tika.version}</version>
>             <scope>test</scope>
>             <exclusions>
>                 <exclusion>
>                     <groupId>commons-logging</groupId>
>                     <artifactId>commons-logging</artifactId>
>                 </exclusion>
>             </exclusions>
>         </dependency>
>         <dependency>
>             <groupId>org.apache.sling</groupId>
>             <artifactId>org.apache.sling.testing.osgi-mock</artifactId>
>         </dependency>
>         <dependency>
>             <groupId>org.hamcrest</groupId>
>             <artifactId>hamcrest-all</artifactId>
>             <version>1.3</version>
>             <scope>test</scope>
>         </dependency>
>         <dependency>
>             <groupId>org.mockito</groupId>
>             <artifactId>mockito-core</artifactId>
>             <version>1.10.19</version>
>             <scope>test</scope>
>         </dependency>
>     </dependencies>
> </project>
>
>
> --
> -Tor
>



-- 
-Tor