Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用maven筛选导入文件内容_Maven_Spring Boot_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Maven,Spring Boot,elasticsearch" /> elasticsearch,Maven,Spring Boot,elasticsearch" />

使用maven筛选导入文件内容

使用maven筛选导入文件内容,maven,spring-boot,elasticsearch,Maven,Spring Boot,elasticsearch,我将Spring与maven一起使用,并使用Elasticsearch存储库。我想建立一本同义词词典 所以我在src/main/resources中有一个settings.json,它声明了我的同义词 { "synonym" : { "type" : "synonym", "synonyms" : ["finally,all", "slap,done", ...] } ) 这很好用。但是我的字典将很快扩大。因此,我想将json数组外部化到另一个文件中,并使用Maven

我将Spring与maven一起使用,并使用Elasticsearch存储库。我想建立一本同义词词典

所以我在
src/main/resources
中有一个
settings.json
,它声明了我的同义词

{
  "synonym" : {
    "type" : "synonym",
    "synonyms" : ["finally,all", "slap,done", ...]
  }
) 
这很好用。但是我的字典将很快扩大。因此,我想将json数组外部化到另一个文件中,并使用Maven过滤替换为内容文件。例如:

{
  "synonym" : {
    "type" : "synonym",
    "synonyms" : @synonyms@
  }
) 
我想不出一个合适的解决办法

Maven似乎不使用json属性文件进行过滤。我曾尝试使用yaml属性文件,但除非我明确使用
\
断线,否则它不能用于多行,但这不便于维护

  • 那么,是否有人已经遇到了这个问题
  • 是否有方法将文件内容导入另一个文件
  • 我可以从文件内容声明maven属性和设置值吗
  • 还有其他我没有想到的解决方案吗
  • 或者有人知道如何使用Spring将同义词上传到Elasticsearch

提前感谢您。

我认为您无法使用内置的Maven资源筛选来实现这一点。但这可以通过一个简单的内联Groovy脚本完成,您可以通过Groovy maven插件调用该脚本。如下所示:

<plugin>
  <groupId>org.codehaus.gmaven</groupId>
  <artifactId>groovy-maven-plugin</artifactId>
  <executions>
    <execution>
      <id>replace-synonyms</id>
      <goals>
        <goal>execute</goal>
      </goals>
      <phase>process-resources</phase>
      <configuration>
        <source>
          def synonyms = new File("${basedir}/src/main/resources/synonyms.txt").getText('UTF-8')
          def template = new File("${basedir}/src/main/resources/settings.json").getText('UTF-8')
          def result = template.replace("@synonyms@", synonyms)
          new File("${basedir}/target/settings.json").write(result,'UTF-8')
        </source>
      </configuration>
    </execution>
  </executions>
</plugin>

org.codehaus.gmaven
groovy maven插件
替换同义词
执行
过程资源
def synonyms=新文件(“${basedir}/src/main/resources/synonyms.txt”).getText('UTF-8')
def template=新文件(“${basedir}/src/main/resources/settings.json”).getText('UTF-8')
def result=template.replace(“@synonyms@”,同义词)
新文件(“${basedir}/target/settings.json”).write(结果为“UTF-8”)

我发现了一个插件,可以处理具有多行值的yaml属性:

<plugin>
     <groupId>it.ozimov</groupId>
     <artifactId>yaml-properties-maven-plugin</artifactId>
     <executions>
         <execution>
             <phase>initialize</phase>
              <goals>
                 <goal>read-project-properties</goal>
              </goals>
              <configuration>
                  <files>
                <file>${project.basedir}/src/main/resources/synonyms.yml</file>
                  </files>
               </configuration>
          </execution>
      </executions>
</plugin>

谢谢它可以做这项工作,但我找到了另一种选择
synonyms: >
  [
    "finally,all",
    "slap,done",
     ...
  ]