上周我们的团队决定从Netbeans迁移到Eclipse,因为我们开发了一些只能在Eclipse上运行的新插件。
首先,项目开始使用来自pom <build>
标签的maven插件。但是停止不起作用。在netbeans中,我使用exec-maven-plugin
来执行目标文件夹中的java -jar Project.jar
。这是代码:
<build>
<sourceDirectory>src/java</sourceDirectory>
<resources>
<resource>
<directory>src/cp</directory>
<targetPath>src/cp</targetPath>
</resource>
<resource>
<directory>src/rpt</directory>
<targetPath>src/rpt</targetPath>
</resource>
<resource>
<directory>src/sql</directory>
<targetPath>src/sql</targetPath>
</resource>
<resource>
<directory>etc</directory>
<targetPath>etc</targetPath>
</resource>
<resource>
<directory>www</directory>
<targetPath>www</targetPath>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.9.4</version>
<configuration>
<connectionType>connection</connectionType>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<id>setVersion</id>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>sh</executable>
<arguments>
<argument>./etc/changeVersion.sh</argument>
</arguments>
<workingDirectory>${basedir}</workingDirectory>
</configuration>
</execution>
<execution>
<id>debugJar</id>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>cd target/</executable>
<executable>java</executable>
<arguments>
<argument>-Xdebug</argument>
<argument>-Xnoagent</argument>
<argument>-Xrunjdwp:transport=dt_socket,server=n,address=${jpda.address}</argument>
<argument>-jar </argument>
<argument>${project.artifactId}-${project.version}.jar</argument>
</arguments>
<workingDirectory>${project.build.directory}</workingDirectory>
</configuration>
</execution>
<execution>
<id>runJar</id>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>cd target/</executable>
<executable>java</executable>
<arguments>
<argument>-jar </argument>
<argument>${project.artifactId}-${project.version}.jar</argument>
</arguments>
<workingDirectory>${project.build.directory}</workingDirectory>
</configuration>
</execution></executions>
</plugin><plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifestEntries>
<Project-Name>${project.artifactId}</Project-Name>
<!-- Uncomment if you want to make changes and/or debug in Entuito-->
<!--<Class-Path>${local.OurFramework.dir}${OurFramework.jar}</Class-Path>-->
</manifestEntries>
<manifest>
<addClasspath>true</addClasspath>
<useUniqueVersions>false</useUniqueVersions>
<mainClass>${project.groupId}.Mammut</mainClass>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
<extensions>
<!-- Enabling the use of SSH -->
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ftp</artifactId>
<version>2.10</version>
</extension>
</extensions>
在Netbeans中,当我们使用这个版本时,使用Netbeans控件按钮调试和运行项目没有问题。但是在Eclipse中,项目运行和停止按钮不会停止项目。进程java -jar Project.jar
仍在运行,我们必须使用htop或其他方法来杀死它。
复制所有lib和包装的原因是缓慢进行并使用了许多读/写操作,我们希望使用Java Application运行来运行和调试项目,并且不需要为每个次要项目重建整个项目更改。但问题也出现在这里。每个项目都有依赖,这是我们的java框架,所有框架资源文件都在jar存档中(一些conf.xml文件,图像等)在大多数时候需要修复我们改变的东西我们都有项目在一个工作区中打开。 Netbeans和Eclipse会自动检测依赖项位置,并将其从.m2文件夹更改为此时打开的工作区项目。
这里的问题是,当我使用maven clean install
作为框架然后使用JavaApp运行主项目时,项目没有运行导致无法从框架中找到资源文件。此时,如果我从工作区关闭frameWork并运行主项目Eclipse,将依赖路径更改为.m2文件夹,一切都很好,但这是非常缓慢的过程并使调试不可行。
任何人都可以共享一个pom构建,可以帮助我解决问题或任何建议,如果我的方法错误,可以指导“如何”正确地完成它。
答案 0 :(得分:0)
当项目及其依赖性开放时,我们处理了缺少资源的问题。他们是我们的代码中的一个错误,用于在不在.jar存档中时加载resoure文件。 现在唯一剩下的就是Manifest文件的这个小问题了。 project / target / classes /中没有清单文件,有没有办法在打包的jar中创建相同的Manifest文件。