solr 的maven_使用Maven运行Solr

solr 的maven

使用Maven运行Solr

Solr是一个开源搜索服务器,它是使用Lucene Core的索引和搜索功能构建的,它可以用于使用几乎任何编程语言来实现可扩展的搜索引擎。

尽管Solr具有许多优点,但建立一个开发环境并不是其中之一。 这篇博客文章描述了我们如何使用Maven运行Solr,并确保每个开发人员都使用相同的配置,架构和Solr版本。

我们的Maven构建的要求如下:

  • 我们的Maven构建的属性必须从外部属性文件中读取。 该规则的唯一例外是,依赖项的版本号在我们的POM文件中声明。
  • 启动我们的Solr实例时,构建过程必须将Solr配置文件复制到正确的目录。
  • 当开发人员在命令提示符下执行mvn clean命令时,构建过程必须清除配置文件。
  • 必须能够通过使用Jetty Maven插件启动我们的Solr实例。

通过执行以下步骤,我们可以满足这些要求:

  1. 创建一个POM文件。
  2. 获取所需的依赖项。
  3. 获取Solr配置文件。
  4. 创建属性文件,其中包含在我们的Maven构建中使用的属性。
  5. 编辑solr.xml文件。
  6. 配置属性Maven插件。
  7. 配置复制Maven插件。
  8. 配置Jetty Maven插件。

下面将更详细地描述这些步骤。

创建POM文件

首先,我们必须为Web应用程序项目创建POM文件。 我们的POM文件的框架如下所示:

<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>net.petrikainulainen.maven</groupId><artifactId>running-solr-with-maven</artifactId><packaging>war</packaging><version>0.1</version><profiles><!-- Add profile configuration here --></profiles><dependencies><!-- Add dependencies here --></dependencies><build><finalName>solr</finalName><!-- Add filter configuration here --><!-- Add resources configuration here --><plugins><!-- Add plugin configuration here --></plugins></build>
</project>

获取所需的依赖关系

我们唯一需要的依赖是Solr 4.1.0(战争)。 换句话说,我们唯一要做的就是将以下依赖项声明添加到我们的POM文件的依赖项部分:

<dependency><groupId>org.apache.solr</groupId><artifactId>solr</artifactId><version>4.1.0</version><type>war</type>
</dependency>

获取Solr配置文件

通过执行以下步骤,我们可以获取Solr配置文件:

  1. 下载Solr 4.1.0的二进制发行版 。
  2. 将下载的软件包解压缩到所需目录。
  3. 进入解压缩的Solr二进制发行版的根目录。
  4. 将以下文件从目录example / solr / collection1 / conf复制到目录src / main / configadmin-extra.html,admin-extra-menu.menu-bottom.html,admin-extra.menu-top.hml ,currency.xml,elevate.xml,mapping-FoldToASCII.txt,mapping-ISOLatin1Accent.txt,protwords.xml,schema.xml,solrconfig.xml,spellings.txt,stopwords.txt,同义词.txt和update-script.js
  5. 将从目录example / solr / collection1 / conf / lang找到的特定于语言的配置文件复制到目录src / main / config / lang中
  6. 将从示例example / solr / collection1 / conf / velocity目录中找到的Velocity宏和其他文件复制到目录src / main / config / velocity中
  7. 将从目录example / solr / collection1 / conf / xslt中找到的XSL样式表复制到目录src / main / config / xslt中
  8. solr.xml文件从目录exaple / solr / collection1复制到目录src / main / resources
  9. 创建目录src / main / webapp / WEB-INF 。 此目录是必需的,以便可以启动Solr实例。

现在,我们已经成功获取了所需的文件,并准备进行下一个阶段。

创建属性文件

接下来是创建在Maven构建中使用的属性文件,并将所需的构建配置文件配置添加到我们的POM文件中。 让我们继续前进,找出实现方法。

首先,我们创建了在Maven构建中使用的属性文件。 我们可以按照以下步骤进行操作:

  1. 将目录profile / dev创建到我们的Maven项目的根目录。
  2. profiles / dev目录中创建一个属性文件config.properties

我们的属性文件具有以下三个属性:

  • solr.detault.core.directory属性指定默认核心目录的值。 这是在我们的Solr实例的主目录下创建的目录。 该目录存储我们的Solr实例及其数据的配置。
  • solr.default.core.name属性指定默认核心的名称。
  • solr.solr.home属性表示我们的Solr安装目录的主目录。

config.properties文件的内容如下所示:

#SOLR PROPERTIES
#Configures the directory used to store the data and configuration of the Solr default core
solr.default.core.directory=todo
#Configures the name of the Solr default core.
solr.default.core.name=todo#SYSTEM PROPERTIES
#Configures the home directory of Solr. Set the preferred directory path here.
solr.solr.home=

其次,我们必须配置Maven构建的构建配置文件,并使用过滤来替换替换资源中包含的变量。 我们可以按照以下步骤进行操作:

  1. 创建一个名为dev的配置文件,并确保它是我们构建的默认配置文件。
  2. 声明一个名为build.profile.id的属性,并将其值设置为'dev'。
  3. 创建一个过滤器,该过滤器读取特定于配置文件的配置文件,并将从我们的资源中找到的变量替换为实际的属性值。

通过将以下配置文件声明添加到我们的POM文件中,我们可以完成步骤1和步骤2:

<profile><id>dev</id><activation><activeByDefault>true</activeByDefault></activation><properties><build.profile.id>dev</build.profile.id></properties>
</profile>

我们可以通过将以下XML添加到POM文件的build部分来完成第三步:

<filters><filter>${project.basedir}/profiles/${build.profile.id}/config.properties</filter>
</filters>
<resources><resource><filtering>true</filtering><directory>src/main/resources</directory></resource>
</resources>

编辑solr.xml文件

因为我们使用特定于配置文件的配置文件来配置Solr默认核心的名称和实例目录,所以我们必须对solr.xml文件进行更改。 这些更改描述如下:

  1. 必须将solr.default.core.name属性的值设置为cores元素的defaultCoreNameAttribute属性的值。
  2. 必须将solr.default.core.name属性的值设置为核心元素的name属性的值。
  3. 必须将solr.default.core.directory属性的值设置为核心元素的instanceDir属性的值。

solr.xml文件的内容如下所示:

<solr persistent="true"><cores adminPath="/admin/cores" defaultCoreName="${solr.default.core.name}" host="${host:}" hostPort="${jetty.port:}" hostContext="${hostContext:}" zkClientTimeout="${zkClientTimeout:15000}"><core name="${solr.default.core.name}" instanceDir="${solr.default.core.directory}" /></cores>
</solr>

配置属性Maven插件

因为我们希望从外部属性文件中读取POM文件中使用的所有属性值,所以我们必须使用一个名为Properties Maven plugin的插件 。 我们可以按照以下步骤配置此插件:

  1. 确保从配置文件特定的配置文件中读取属性。
  2. 创建一个执行,该执行在Maven默认生命周期的初始化阶段中运行Properties Maven插件的read-project-properties目标。
  3. 创建一个执行,该执行在Maven清理生命周期的预清理阶段中运行Properties Maven插件的读取项目属性目标。

Properties Maven插件的配置如下所示:

<plugin><groupId>org.codehaus.mojo</groupId><artifactId>properties-maven-plugin</artifactId><version>1.0-alpha-2</version><configuration><files><!-- Properties are read from profile specific property file --><file>${project.basedir}/profiles/${build.profile.id}/config.properties</file></files></configuration><executions><!-- Load properties for the default lifecycle --><execution><id>default-lifecycle-properties</id><phase>initialize</phase><goals><goal>read-project-properties</goal></goals></execution><!-- Load properties for the clean lifecycle --><execution><id>clean-lifecycle-properties</id><phase>pre-clean</phase><goals><goal>read-project-properties</goal></goals></execution></executions>
</plugin>

配置复制Maven插件

我们将使用Copy Maven插件有两个目的:

  1. 启动Solr实例时,我们会将Solr配置文件复制到正确的目录中。
  2. 在命令提示符处执行命令mvn clean时,我们将删除Solr配置文件。

我们可以通过将以下XML添加到POM文件的插件部分来开始使用:

<plugin><groupId>com.github.goldin</groupId><artifactId>copy-maven-plugin</artifactId><version>0.2.5</version><executions><!-- Add executions here --></executions>
</plugin>

让我们继续前进,了解如何配置Copy Maven插件以复制和删除Solr配置文件。

复制Solr配置文件

我们可以按照以下步骤复制Solr配置文件:

  1. 创建一个执行,该执行在Maven默认生命周期的编译阶段中运行Copy Maven插件的复制目标。
  2. solr.xml文件复制到我们的Solr实例的主目录。 复制文件时,请确保将属性过滤应用于文件。
  3. 将从src / main / config目录找到的文件复制到solr.solr.home / solr.default.core.directory / conf目录。
  4. src / main / config / lang目录中找到的特定于语言的配置文件复制到solr.solr.home / solr.detault.core.directory / conf / lang目录中。
  5. src / main / config / velocity目录中找到的Velocity宏和其他文件复制到solr.solr.home / solr.detault.core.directory / conf / velocity目录。
  6. 将从src / main / config / xslt目录中找到的XSL样式表复制到solr.solr.home / solr.detault.core.directory / conf / xslt目录中。

我们执行的配置如下所示:

<execution><id>copy-solr-config</id><phase>compile</phase><goals><goal>copy</goal></goals><configuration><resources><!--Copy solr.xml to correct directory and applies propertiesfiltering to it.--><resource><directory>${project.basedir}/src/main/resources</directory><filtering>true</filtering><targetPath>${solr.solr.home}</targetPath><includes><include>solr.xml</include></includes></resource><!-- Copy configuration files --><resource><directory>${project.basedir}/src/main/config</directory><targetPath>${solr.solr.home}/${solr.default.core.directory}/conf</targetPath><excludes><exclude>lang</exclude><exclude>velocity</exclude><exclude>xslt</exclude></excludes></resource><!-- Copy language specific configuration files --><resource><directory>${project.basedir}/src/main/config/lang</directory><targetPath>${solr.solr.home}/${solr.default.core.directory}/conf/lang</targetPath></resource><!-- Copy Velocity macros and other files --><resource><directory>${project.basedir}/src/main/config/velocity</directory><targetPath>${solr.solr.home}/${solr.default.core.directory}/conf/velocity</targetPath></resource><!-- Copy XSL style sheets --><resource><directory>${project.basedir}/src/main/config/xslt</directory><targetPath>${solr.solr.home}/${solr.default.core.directory}/conf/xslt</targetPath></resource></resources></configuration>
</execution>

删除Solr配置文件

我们可以按照以下步骤删除Solr配置文件:

  1. 创建一个执行,该执行在干净的生命周期阶段中运行Copy Maven插件的复制目标。
  2. 如果找不到目录,请确保构建不会失败。
  3. 删除在我们的Maven项目的根目录中创建的overlays目录。
  4. 删除从我们的Solr实例的主目录中找到的solr.xml文件。
  5. 删除从solr.solr.home / solr.default.core.directory目录中找到的conf目录。

我们执行的配置如下所示:

<execution><id>clean-solr</id><phase>clean</phase><goals><goal>copy</goal></goals><configuration><failIfNotFound>false</failIfNotFound><resources><!-- Clean the overlays directory from the project root directory --><resource><clean>true</clean><cleanEmptyDirectories>true</cleanEmptyDirectories><directory>${project.basedir}/overlays</directory><includes><include>**/**</include></includes></resource><!-- Remove the solr.xml file --><resource><clean>true</clean><directory>${solr.solr.home}</directory><includes><include>solr.xml</include></includes></resource><!-- Remove the conf directory --><resource><clean>true</clean><cleanEmptyDirectories>true</cleanEmptyDirectories><directory>${solr.solr.home}/${solr.default.core.directory}</directory><includes><include>conf</include></includes></resource></resources></configuration>
</execution>

配置Jetty Maven插件

我们可以按照以下步骤配置Jetty Maven插件以运行Solr实例:

  1. 配置Jetty侦听端口8983。
  2. 确保从配置文件特定的配置文件中读取系统属性。 该属性文件包含一个名为solr.solr.home的属性,该属性指定我们的Solr实例的主目录。
  3. 指定我们应用程序的上下文路径为/ solr

Jetty Maven插件的配置如下所示:

<plugin><groupId>org.mortbay.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>8.1.8.v20121106</version><configuration><stopPort>9966</stopPort><stopKey>stop</stopKey><connectors><!-- Listen to port 8983 --><connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"><port>8983</port><maxIdleTime>60000</maxIdleTime></connector></connectors><!-- Read system properties from profile specific configuration file --><systemPropertiesFile>${project.basedir}/profiles/${build.profile.id}/config.properties</systemPropertiesFile><webApp><contextPath>/solr</contextPath></webApp></configuration>
</plugin>

运行Solr

现在,我们已经创建了一个Maven构建,该构建可用于在开发环境中运行Solr。 启动Solr实例有两种选择:

  • 我们可以在命令提示符下执行mvn jetty:run命令。
  • 我们可以在命令提示符下执行mvn jetty:run-war命令。

启动Solr之后,我们可以使用以下URL地址访问其管理界面: http:// localhost:8983 / solr

Github提供了示例应用程序 。 本示例使用自定义架构,因为我计划在Spring Data Solr教程中使用它。 原始示例架构可从etc目录中找到。

参考:来自Petri Kainulainen博客的JCG合作伙伴 Petri Kainulainen 与Maven一起运行Solr 。

翻译自: https://www.javacodegeeks.com/2013/05/running-solr-with-maven.html

solr 的maven

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux指定内核位置,ARM linux内核启动时几个关键地址

1. 内核启动地址ZTEXTADDR解压代码运行的开始地址。没有物理地址和虚拟地址之分&#xff0c;因为此时MMU处于关闭状态。这个地址不一定时RAM的地址&#xff0c;可以是支持读写寻址的flash等存储中介。Start address of decompressor. heres no point in talking about vi…

pae扩展内存 linux,Linux内核-内存管理-PAE(物理地址扩展)

Intel 通过在处理器上把管脚数从 32 增加到 36&#xff0c;以提高处理器的寻址能力&#xff0c;使其达到 2^3664GB&#xff0c;然而线性地址的位数仍然是 32 位&#xff0c;为此&#xff0c;需引入一种新的分页机制。从pentium pro 处理器开始&#xff0c;intel引入一种叫做 PA…

java嵌入式db_Java DB嵌入式模式

java嵌入式dbJava DB是基于Java编程语言和SQL的关系数据库管理系统。 这是Apache软件基金会的开源Derby项目的Oracle版本。 Java SE 7 SDK中包含Java DB。 Java DB有两个部署选项&#xff1a; Embedded和Network Server 。 这篇文章是关于嵌入式部署或模式的。 1.嵌入式 在嵌…

内存属于linux文件吗,linux下的/dev/shm是什么? 内存 文件系统

linux下的/dev/shm是什么&#xff1f;/dev/shm/是linux下一个目录&#xff0c;/dev/shm目录不在磁盘上&#xff0c;而是在内存里&#xff0c;因此使用linux /dev/shm/的效率非常高&#xff0c;直接写进内存。我们可以通过以下两个脚本来验证linux /dev/shm的性能&#xff1a;[r…

群晖备份linux分区,数据丢失的后悔药,群晖NAS备份方案详解

“秒速开机”——据说90%的人都是因为这句话而知道的SSD固态硬盘。相比于机械硬盘&#xff0c;SSD固态硬盘开机快、关机快、打开软件快、载入数据快、拷贝快、删除也快——既快乐、又爽快&#xff0c;更是大块人心!然而&#xff0c;SSD固态硬盘已经可以完全取代机械硬盘了吗&am…

php cdi_异步CDI事件

php cdi几天前&#xff0c;在我们的常规代码审查中&#xff0c;我的一位同事提出了一个问题&#xff0c;即如果可能&#xff0c;一次同时调用CDI观察者&#xff08;这样的方法带有参数Observes &#xff09;将发生多次&#xff1f;用于不同的事件实例。 换句话说&#xff0c;在…

tg3269c网卡驱动linux,TP-Link3269C网卡驱动官方版

TG-3269C驱动是一款能够安装于由普联发布的无线网卡驱动&#xff0c;通过此安装驱动我们手机和其他无线设备才能连接上无线网卡并进行上网&#xff0c;同时如果你的网卡经常出现断开和重连、网络不稳定等情况可以通过重新安装驱动&#xff0c;查看是否是硬件的问题&#xff0c;…

使用Spring Security,Thymeleaf和Okta保护Java应用程序的安全

永不再构建身份验证 –喜欢构建用户管理&#xff1f; 使用Okta&#xff0c;您可以在几分钟内为您的应用程序添加社交登录&#xff0c;多因素身份验证和OpenID Connect支持。 立即创建一个免费的开发者帐户。 在构建Java应用程序时&#xff0c;用户管理是至关重要的考虑因素。 …

红旗linux添加usb无线网卡,在Ubuntu 8.10中安装无线网卡RTL8187SE驱动

本人的笔记本是微星的Wind U90&#xff0c;自带的无线网卡是RTL8187SE。这款无线网卡在一般的Linux下是没有驱动的&#xff0c;微星的官方也仅仅提供在OpenSUSE下的驱动。为了在我的Ubuntu下使用这个网卡&#xff0c;只能自己动手了。还好&#xff0c;有了互联网上各位大侠和微…

java linq_LINQ和Java

java linqLINQ已经非常成功&#xff0c;但在.NET生态系统中也引起了争议。 许多人正在Java世界中寻找可比的解决方案。 为了更好地理解什么是可比的解决方案&#xff0c;让我们看一下LINQ解决的主要问题&#xff1a; 查询语言通常是具有许多关键字的声明性编程语言。 它们提供…

嵌入式 linux restful,嵌入式 RESTful 框架 express.java

软件介绍express.java 是一个微型的 RESTful Web 框架。可用于嵌入应用内部&#xff0c;替代 JMX 用于跨语言通讯。示例代码&#xff1a;WebServer.jettyServer().get("/", new AjaxController() {Overridepublic Object ajax(ParamMap params) {return ResultMap.cr…

将Google reCaptcha与Spring Boot应用程序结合使用

介绍 Google的reCaptcha是一个用于防止漫游器向您的公共表单提交数据或访问您的公共数据的库。 在本文中&#xff0c;我们将研究如何将reCaptcha与基于Spring Boot的Web应用程序集成 设置验证码 您应该从管理面板创建API密钥。 您必须创建一个示例应用程序&#xff0c;如下所…

探索 HTTP 请求的世界:get 和 post 的奥秘(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

linux 书签管理工具,在书签管理工具中使用Ubuntu字体

通过便捷书签管理程序(Bookmarklet&#xff0c;一种在浏览器中存放书签URL地址的应用程序)来在大多数的网站上推广使用Ubuntu系统的默认字体。——读者米格尔费尔南迪斯米格尔在他的想法产生之前告诉我们说&#xff1a;“我发现Ubuntu系统的字体在提高可读性上超过了绝大多数的…

linux18.2安装界面,Ubuntu 18.10下安装Grub Customizer 5.1.0配置grub2图形化界面

配置Grub2/burg引导装载程序Grub Customizer 5.1.0新增加对Ubuntu 18.10的支持&#xff0c;我们可以用PPA源来安装&#xff0c;同时还支持Ubuntu 18.04、16.04、14.04。Grub Customizer简介Grub Customizer是用来配置Grub/burg引导装载程序的图形工具&#xff0c;此次发布的5.1…

使用Eclipse和Open Liberty的Java EE 8上的Java 9

几周前&#xff0c;我写了一篇文章&#xff0c;标题为哪个IDE和服务器支持Java EE 8和Java9 &#xff0c;着眼于Java 9和Java EE 8之间的当前运行状态。您可以期待事情发展很快&#xff0c;我们现在有了一些alpha和支持Java 9和Java EE 8的开发版本。这些是– Payara 5 –适用…

深入浅出linux工具与编程 下载,8208.深入浅出Linux工具与编程.pdf

<>猛点这里下载全部内容目录&#xff1a;第1篇Linux命令及其工具第1章Linux系统与命令1.1Linux操作系统1.1.1Linux重要概念1.1.2Linux组成1.1.3Linux目录结构1.1.4Linux操作系统的组成1.1.5Linux用户管理1.1.6Linux文件管理1.2Linux命令1.2.1Linux命令帮助1.2.2Linux命令…

linux删除含有特殊字符的行,Linux 删除带有特殊字符的文件

禁止页面后退JS(兼容各浏览器)XML中&lt&semi;beans&gt&semi;中属性概述

使用SpringWebFlux的反应式Web应用程序

1.反应式编程简介 反应式编程是为具有以下特征的应用程序创造的术语&#xff1a; 非阻塞应用 事件驱动和异步 需要少量线程来垂直扩展&#xff08;即在JVM中&#xff09; 就像面向对象的编程&#xff0c;函数式编程或过程式编程一样&#xff0c;反应式编程只是另一种编程范…

对linux的mv命令设计测试用例,测试用例中的细节 - 八音弦的个人空间 - OSCHINA - 中文开源技术交流社区...

编写测试用例是在实际测试执行开始之前进行的软件测试活动的重要组成部分。因此&#xff0c;在编写测试用例时必须头脑清晰地理解需求。测试执行阶段的顺利程度主要取决于测试用例的编写质量&#xff0c;还取决于对需求的理解程度。理论上来讲应避免在测试用例中放入不必要或不…