[
https://issues.apache.org/jira/browse/FELIX-6198?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Guillaume Nodet updated FELIX-6198:
-----------------------------------
Summary: Problem with embeding elasticsearch dependency (was: Problem with
ebmeding elasticsearch dependency)
> Problem with embeding elasticsearch dependency
> ----------------------------------------------
>
> Key: FELIX-6198
> URL: https://issues.apache.org/jira/browse/FELIX-6198
> Project: Felix
> Issue Type: Bug
> Components: Maven Bundle Plugin
> Affects Versions: maven-bundle-plugin-4.2.1
> Environment: Adobe Experience Manager 6.4, Java 1.8 (tried on 9 and
> 11 as well), elasticsearch version 7.4.1
> Reporter: Tadija
> Priority: Major
> Labels: newbie
> Attachments: Screenshot 2019-10-30 at 09.54.56.png, Screenshot
> 2019-11-01 at 20.36.09.png
>
>
> I am trying to embed the following dependency and it's transitive
> dependencies:
>
> {code:java}
> <dependency>
> <groupId>org.elasticsearch.client</groupId>
> <artifactId>elasticsearch-rest-high-level-client</artifactId>
> </dependency>
> <dependency>
> <groupId>org.elasticsearch</groupId>
> <artifactId>elasticsearch</artifactId>
> </dependency>
> <dependency>
> <groupId>org.elasticsearch.client</groupId>
> <artifactId>elasticsearch-rest-client</artifactId>
> </dependency>{code}
>
> I am working with AEM 6.4v and tried maven-bundle-plugin versions 2.1.0 and
> 4.2.1.
> With first version, I can not build project due to the following error:
> Classes found in the wrong directory:
> elasticsearch/META-INF/versions/9/org/elasticsearch/monitor/jvm
> I've also tried two options of maven-bundle plugin which are showed bellow:
> With maven hade plugin:
>
> {code:java}
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-shade-plugin</artifactId>
> <version>1.1</version>
> <executions>
> <execution>
> <phase>package</phase>
> <goals>
> <goal>shade</goal>
> </goals>
> <configuration>
> <artifactSet>
> <includes>
>
> <include>org.elasticsearch.client:elasticsearch-rest-high-level-client</include>
> <include>org.elasticsearch:elasticsearch</include>
>
> <include>org.elasticsearch.client:elasticsearch-rest-client</include>
> </includes>
> </artifactSet>
> <filters>
> <filter>
>
> <artifact>org.elasticsearch.client:elasticsearch-rest-high-level-client</artifact>
> <excludes>
> <exclude>**</exclude>
> </excludes>
> </filter>
> <filter>
> <artifact>org.elasticsearch:elasticsearch</artifact>
> <excludes>
> <exclude>**</exclude>
> </excludes>
> </filter>
> <filter>
>
> <artifact>org.elasticsearch.client:elasticsearch-rest-client</artifact>
> <excludes>
> <exclude>**</exclude>
> </excludes>
> </filter>
> </filters>
>
> <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
> <createDependencyReducedPom>true</createDependencyReducedPom>
> </configuration>
> </execution>
> </executions>
> </plugin>
> <plugin>
> <groupId>org.apache.felix</groupId>
> <artifactId>maven-bundle-plugin</artifactId>
> <version>4.2.1</version>
> <extensions>true</extensions>
> <configuration>
> <instructions>
> <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
> <Export-Package>we.retail.core.model*</Export-Package>
> <Import-Package> *;resolution:=optional </Import-Package>
> <Private-Package> we.retail.core* </Private-Package>
> <Sling-Model-Packages>
> we.retail.core.model
> </Sling-Model-Packages>
>
> <!--<_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>-->
>
> <_removeheaders>Ignore-Package,Include-Resource,Private-Package,Embed-Dependency</_removeheaders>
> </instructions>
> <unpackBundle>true</unpackBundle>
> </configuration>
> </plugin>{code}
>
> Second without maven shade plugin:
>
> {code:java}
> <plugin>
> <groupId>org.apache.felix</groupId>
> <artifactId>maven-bundle-plugin</artifactId>
> <extensions>true</extensions>
> <configuration>
> <instructions>
> <Embed-Dependency>
> org.apache.servicemix.bundles.solr-solrj, noggit,
> *elasticsearch*, rank-eval-client, lang-mustache-client,
> httpasyncclient, mapper-extras-client, parent-join-client,
> aggs-matrix-stats-client
> </Embed-Dependency>
> <Embed-Transitive>true</Embed-Transitive>
> <Embed-Directory>OSGI-INF/lib</Embed-Directory>
> <Export-Package>we.retail.core.model*</Export-Package>
> <Import-Package>
> *;resolution:=optional
> </Import-Package>
> <Private-Package>
> we.retail.core*
> </Private-Package>
> <Sling-Model-Packages>
> we.retail.core.model
> </Sling-Model-Packages>
> </instructions>
> </configuration>
> </plugin>
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-javadoc-plugin</artifactId>
> <configuration>
> <excludePackageNames>
> *.impl
> </excludePackageNames>
> </configuration>
> </plugin>
> {code}
> Dependencies:
> {code:java}
> <!-- Elasticsearch -->
> <dependency>
> <groupId>org.elasticsearch.client</groupId>
> <artifactId>elasticsearch-rest-high-level-client</artifactId>
> <version>7.4.1</version>
> </dependency>
> <dependency>
> <groupId>org.elasticsearch</groupId>
> <artifactId>elasticsearch</artifactId>
> <version>7.4.1</version>
> </dependency>
> <dependency>
> <groupId>org.elasticsearch.client</groupId>
> <artifactId>elasticsearch-rest-client</artifactId>
> <version>7.4.1</version>
> </dependency>
> {code}
> Also I got this warning all the time in IntelliJ - *The package
> org.elasticsearch.client is inside a non-bundle dependency* on this code:
> try (RestHighLevelClient client = new
> RestHighLevelClient(RestClient.builder(new HttpHost(server, port, protocol),//
> new HttpHost(server, secondPort, protocol))); ResourceResolver
> resourceResolver = request.getResourceResolver())
> {
> if (indexType.equalsIgnoreCase(PROP_INDEX_TYPE_INDEX))
> {
> Session session = resourceResolver.adaptTo(Session.class);
> XContentBuilder builder = this.elasticsearchService.crawlContent(session);
> IndexRequest indexRequest = new IndexRequest(indexName);
> indexRequest.id("2");
> try
> {
> indexRequest.source(builder);
> IndexResponse indexResponse = client.index(indexRequest,
> RequestOptions.DEFAULT);
> writeResponse(indexResponse, response);
> }
>
> *So problem is sometimes shown as NoClassDefinition for come of transitive
> dependencies, and sometimes servlet returns 500 error if any of elasticsearch
> imports are inside the code.*
> Any idea/help will be appreciated.
> Whis is done on
> [we.retail|[https://github.com/Adobe-Marketing-Cloud/aem-sample-we-retail]]
> project so it is easy replicable. You can see full code on the following
> links:
> [https://github.com/tadijam64/search-engines-comparison-on-we-retail/blob/elasticsearch-servlet-impl/core/pom.xml]
>
> and other version here:
> [https://github.com/tadijam64/search-engines-comparison-on-we-retail/blob/elasticsearch-maven-shade-test/core/pom.xml]
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)