Maven 无法将unix可执行文件传输到目标文件夹

Maven 无法将unix可执行文件传输到目标文件夹,maven,unix,maven-plugin,maven-resources-plugin,Maven,Unix,Maven Plugin,Maven Resources Plugin,我可以使用maven资源插件成功地将资源文件从源复制到目标。但复制unix可执行文件sh文件时会出现问题。它是我的资源下的unix可执行文件,双击后成功执行。但是,在执行mvn clean包之后,它将作为文本文件而不是unix可执行文件传输。我不明白背后的主要原因。我试图将其作为unix可执行文件传输,就像在目标文件夹的主项目中一样,但我找不到一种方法。我也不确定问题是与maven资源插件有关还是与文件本身有关。您可以在下面看到文件的内容和我的插件配置。谢谢你的帮助 <pl

我可以使用maven资源插件成功地将资源文件从源复制到目标。但复制unix可执行文件sh文件时会出现问题。它是我的资源下的unix可执行文件,双击后成功执行。但是,在执行mvn clean包之后,它将作为文本文件而不是unix可执行文件传输。我不明白背后的主要原因。我试图将其作为unix可执行文件传输,就像在目标文件夹的主项目中一样,但我找不到一种方法。我也不确定问题是与maven资源插件有关还是与文件本身有关。您可以在下面看到文件的内容和我的插件配置。谢谢你的帮助

        <plugin>
           <artifactId>maven-resources-plugin</artifactId>
           <configuration>
               <delimiters>
                   <delimiter>${resource.delimiter}</delimiter>
               </delimiters>
               <useDefaultDelimiters>false</useDefaultDelimiters>
           </configuration>
           <executions>
               <execution>
                   <id>copy-resources</id>
                   <phase>compile</phase>
                   <goals>
                       <goal>copy-resources</goal>
                   </goals>
                   <configuration>
                       <outputDirectory>${project.build.directory}</outputDirectory>
                       <resources>
                           <!-- Include filtered resources and Dockerfile
                               for docker and packaging installation tests -->
                           <resource>
                               <directory>${project.basedir}/src/main/filter</directory>
                               <filtering>true</filtering>
                           </resource>
                           <resource>
                               <directory>${project.basedir}/src/main/resources</directory>
                               <filtering>true</filtering>
                               <includes>
                                   <include>application.yml</include>
                                   <include>logback.xml</include>
                               </includes>
                           </resource>
                        </resources>
                   </configuration>
               </execution>
           </executions>
       </plugin>

您可以执行以下操作,只需为您的目录配置筛选:

在rpm maven插件中,您可以使用以下内容:

<mapping>
  <directory>/xyz/sbin/</directory>
  <filemode>755</filemode>
  <username>user</username>
  <groupname>group</groupname>
  <sources>
    <source>
      <location>${project.build.directory}/xyz.sh</location>
    </source>
  </sources>
</mapping>

${project.build.directory}将是目标目录

你为什么要用Maven复制一个httpd启动文件shell?hello@khmarbaise是的,在复制文件后,我使用rpm Maven插件从目标文件夹获取资源并创建rpm文件。不幸的是,插件能够从目标文件夹复制文件,并创建了rpm文件。但正如rpm文件内容中所预期的那样,存在一个sh文件而不是unix executableshell文件。您必须在rpm maven插件配置中正确设置可执行标志才能正确处理该问题。除此之外,任务的配置看起来很复杂…@khmarbaise,因此您认为与maven资源插件无关,因为rpm maven插件中应该给出可执行标志。你知道那面旗帜吗?我不相信。我知道你必须这样做,你也可以使配置比maven resources插件的长配置更容易。这完美地解决了我的问题。我不知道问题来自权利。谢谢你@khmarbaise
<resources>
  <resource>
    <directory>src/main/filter</directory>
    <filtering>true</filtering>
  </resource>
  ...
</resources>
<mapping>
  <directory>/xyz/sbin/</directory>
  <filemode>755</filemode>
  <username>user</username>
  <groupname>group</groupname>
  <sources>
    <source>
      <location>${project.build.directory}/xyz.sh</location>
    </source>
  </sources>
</mapping>