最佳实践:如何在maven存储库中托管服务器端代码

fly*_*ire 5 javascript java maven-2

将javascript/html/css代码放在maven存储库中的最佳方法是什么,以便java项目可以轻松使用.

有没有办法做到这一点,所包含的项目可以很容易地被包含项目"网络可见"?

例如,假设我编写了一个非常有用的tricks.js文件,并将其放在mvn存储库中.

是否可以创建一个web项目,将tricks.js添加为依赖项,然后执行

<script src="/some/thing/tricks.js"/>
Run Code Online (Sandbox Code Playgroud)

导致tricks.js文件被提供?

Ric*_*ler 6

应将外部资源打包到工件中并发布到存储库(为简单起见,使用jar工件,但您可以指定一个程序集来打包zip,以便明确工件的用途).在Maven的依赖关系的插件解压JAR的内容为在战争中项目的指定位置.然后 将该文件夹指定为maven-war-plugin 的外部Web资源目录.

以下配置将解压缩my-resourcestarget/external-resources目录中的内容,然后在战争中包含该文件夹的内容,就像它们已在src/main/resources中定义一样.

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
    <execution>
      <id>unpack</id>
      <phase>generate-resources</phase>
      <goals>
        <goal>unpack</goal>
      </goals>
      <configuration>
        <artifactItems>
          <artifactItem>
            <groupId>name.seller.rich</groupId>
            <artifactId>my-resources</artifactId>
            <version>1.0.0</version>
            <type>jar</type>
            <overWrite>false</overWrite>
          </artifactItem>
        </artifactItems>
        <outputDirectory>${project.build.directory}/external-resources</outputDirectory>
        <overWriteReleases>false</overWriteReleases>
      </configuration>
    </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <version>2.0</version>
  <configuration>
    <webResources>
      <resource>
        <directory>${project.build.directory}/external-resources</directory>
      </resource>
    </webResources>
  </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)