首先:我的Maven知识有限,所以请耐心等待。 ;-)我有一个简单的Maven项目,目前由三个模块组成。包含应用程序核心的模块称为核心(Creative name,huh?:-)),其他模块基本上是此核心模块的插件。有一个限制:只能在核心模块中添加一个插件。
核心模块有自己的Spring IoC配置减去插件配置。这很简单:核心代码将读取名为“plugin”的bean,该bean未在核心配置中定义。插件模块将发送他们自己的配置文件,这些文件将提供一个名为“plugin”的bean,然后由核心代码使用。这非常适合我的用例。
我想提供将部署系统的Admin,这是一种构建包含核心,选定插件和合理默认配置的分发的简单方法。也许是tar.gz
或类似的东西。我不希望他挖掘我的Spring IoC文件,将它们复制在一起等等。像TCP / IP端口这样的实际配置是在属性文件中完成的。
澄清我的意思我已经构建了一个示例结构。请注意,文件名仅用于说明目的。
/bin/core.jar [Build from core module] /bin/plugin.jar [Build from a plugin module] /lib-bin/library-required-by-plugin.jar [Dependency resolved by maven + copy] /lib-bin/library-required-by-core.jar [Dependency resolved by maven + copy] /lib-bin/another-library-required-by-core.jar [Dependency resolved by maven + copy] /etc/spring/core-beans.xml [Copied from core module /etc/] /etc/spring/plugin.xml [Copied from plugin module /etc/] /etc/default-core-config.properties [Copied from core module /etc/] /etc/default-plugin-config.properties [Copied from plugin module /etc/]
我目前正在处理程序集插件,但我似乎绕圈而且没有任何作用。非常令人沮丧。如果您需要更多信息或不明白我的意思请随时提出。 : - )
除了澄清我的问题:如何做到这一点? (好吧,它就是这么简单:-))正如我之前所说,我对Maven的了解有限,目前我无处可去,即使我知道汇编插件可能是要走的路。特别是如何从每个模块获取依赖关系,在哪里配置插件(在父项目中?)甚至一些汇编描述符都会有很大帮助。
感谢您的所有投入!
答案 0 :(得分:1)
我使用程序集插件打包命令行应用程序的分发,如下所示:
<plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2-beta-3</version> <configuration> <descriptors> <descriptor>src/main/assembly/bin.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>assembly</id> <phase>package</phase> <goals> <goal>assembly</goal> </goals> </execution> </executions> </plugin>
<assembly> <id>bin</id> <includeBaseDirectory>false</includeBaseDirectory> <formats> <format>zip</format> </formats> <fileSets> <fileSet> <directory>target</directory> <includes> <include>ctmemapi.properties</include> <include>ctmxml/*</include> <include>scampa</include> <include>*.bat</include> <include>*.sh</include> </includes> <outputDirectory>${project.artifactId}-${project.version}</outputDirectory> <fileMode>755</fileMode> </fileSet> <fileSet> <directory>target</directory> <includes> <include>scampa*.jar</include> </includes> <outputDirectory>${project.artifactId}-${project.version}/lib</outputDirectory> <fileMode>644</fileMode> </fileSet> <fileSet> <directory>src/test/data</directory> <outputDirectory>${project.artifactId}-${project.version}/test-data</outputDirectory> <fileMode>644</fileMode> </fileSet> </fileSets> <dependencySets> <dependencySet> <outputDirectory>${project.artifactId}-${project.version}/lib</outputDirectory> <fileMode>644</fileMode> </dependencySet> </dependencySets> </assembly>
mvn assembly:assembly
mvn包
mvn安装
mvn deploy
答案 1 :(得分:0)
如果您只是期待确认,那么我确认您所描述的情况是Maven Assembly plugin的完美用例。我只是使用单独的配置文件来处理限制(“只有一个插件可以添加到核心模块”)。
如果您希望获得更具体的指导,请添加具体问题:)