maven,部署桌面应用程序

时间:2013-06-07 10:17:18

标签: java maven

我正在从蚂蚁转向maven。

为了简单起见,我的应用程序是一个连接到数据库的swing应用程序。 我希望将它打包在一个jar文件中 该应用程序需要一个外部库,即Microsoft sql server库,包含在一个jar文件中:sqljdbc4-3.0.jar。

所以我试图包含这个库:

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>sqljdbc4</artifactId>
        <version>3.0</version>
    </dependency>

但是在启动jar时,我得到了例外:

java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

此问题已在其他stackoverflow问题中记录;我正在谈论这个只是为了达到目的。 我的想法(也许是天真的)如下,我想

  • 只用我的代码创建一个jar。
  • 创建一个包含目录(lib)所有库的分发。
  • 清单文件以正确引用所有库。

搜索一下,我发现每个问题都是由不同的maven插件执行的:jar插件,依赖插件和程序集插件。
这是要走的路吗?我感觉不对,因为我不喜欢maven会轻易处理“常规”配置,这三个插件的解决方案似乎有点过于复杂。

2 个答案:

答案 0 :(得分:5)

您需要将这些插件添加到pom

        <plugin>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib</classpathPrefix>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <descriptor>src/main/assembly/assembly.xml</descriptor>
            </configuration>
        </plugin>

的src /主/组件/ assembly.xml

<assembly>
    <id>assembly</id>
    <formats>
        <format>zip</format>
    </formats>
    <dependencySets>
        <dependencySet>
            <outputDirectory>/lib</outputDirectory>
            <unpack>false</unpack>
        </dependencySet>
    </dependencySets>
</assembly>

运行程序集

mvn clean package assembly:single

答案 1 :(得分:1)

这是maven方式。顺便说一下:jar插件和依赖插件总是包含在maven构建中,不需要配置它们。

另外一个很好的帮助可能是appassembler创建一个可分发的包括所有需要的jar文件。