是否可以在maven pom.xml文件中为不同的配置文件使用不同的依赖项集?
例如
mvn -P debug
mvn -P release
Run Code Online (Sandbox Code Playgroud)
我想在一个配置文件中选择一个不同的依赖jar文件,该配置文件具有相同的类名和相同接口的不同实现.
dependency:tree可用于查看给定项目的依赖关系树.但我需要的是看到第三方工件的依赖树.
我想我可以创建一个空项目,但我正在寻找更容易的东西(我需要为几个工件做这个).
互联网上有很多关于Maven如何糟糕的话题.我已经使用Maven的一些功能已经有几年了,我认为最重要的好处是依赖管理.
Maven文档不够充分,但通常当我需要完成某些事情时我会弄清楚它然后它可以工作(例如当我实现签署jar时).我不认为Maven是伟大的,但它确实解决了一些问题,没有它将是一个真正的痛苦.
那么,为什么Maven会有如此糟糕的代表,以及Maven在未来会遇到什么问题呢?也许还有更多我不了解的替代方案?(例如,我从未详细看过常春藤.)
注意:这不是导致争论的尝试.这是尝试清除FUD.
我没有为非常大的组织工作,我从来没有为一家拥有"构建服务器"的公司工作过.
他们的目的是什么?为什么开发人员不在本地计算机上构建项目,或者是他们?有些项目是否如此之大,以至于需要更强大的机器才能在合理的时间内构建它?
我看到构建服务器有用的唯一地方是与构建服务器持续集成,不断构建提交到存储库的内容.是不是我还没有做过足够大的项目?
有人,请赐教:构建服务器的目的是什么?
在Xcode中,我知道你可以获得诸如PROJECT_DIR在某些情况下使用的变量,例如运行脚本构建阶段.我想知道是否有可能获得构建类型(即,发布或调试).有任何想法吗?
在我的J2EE项目中,我有几个依赖项,这些依赖项在任何Maven存储库中都不可用,因为它们是专有库.这些库需要在运行时可用,因此必须复制到目标/.../ WEB-INF/lib ...
现在,我将它们列为我的POM中的系统依赖项,但是使用此方法的问题是,在编译期间没有将其复制到目标构建.这种方法也不是很优雅.
那么将它们集成到Maven中的最佳方法是什么?
注意:我不想创建自己的Maven存储库.
我想从Ant构建文件中为目录中的每个文件执行一个命令.
我正在寻找一个独立于平台的解决方案.
我该怎么做呢?
当然,我可以使用某种脚本语言编写脚本,但这会为项目添加更多依赖项.
我在我的独立应用程序中使用Maven,并且我想将我的JAR文件中的所有依赖项打包到库文件夹中,如下面的答案中所述:
我希望我的最终JAR文件有一个库文件夹,其中包含作为JAR文件的依赖项,而不是maven-shade-plugin将依赖项放在.m2文件夹中的Maven层次结构等文件夹形式的内容.
好吧,实际上当前的配置做了我想要的,但是我在运行应用程序时加载JAR文件时遇到了问题.我无法加载课程.
这是我的配置:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/classes/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.myapp.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>install</id>
<phase>install</phase>
<goals>
<goal>sources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)
该项目从Eclipse运行良好,JAR文件根据我的需要放在我最终的JAR文件中的库文件夹中,但是当从目标文件夹运行最终的JAR文件时,我总是得到ClassNotFoundException:
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
Caused …Run Code Online (Sandbox Code Playgroud) 我想知道我的pom.xml中描述的哪个依赖项在我的目标目录中带来了传递依赖.
更确切地说,我的WEB-INF/lib目录中有"poi-2.5.1-final-20040804.jar"库,我想知道我的pom.xml中的哪个依赖项带来了这个.
我需要掌握每个标志,Visual Studio二进制文件在构建过程中使用的每个开关.我试图通过使用获得一个详细的输出vcbuild,但我没能.
我需要做什么才能看到Visual Studio为我执行的所有操作?没有必要在构建窗口中获取输出.任何地方都可以.
build-process ×10
java ×5
maven-2 ×5
dependencies ×2
agile ×1
ant ×1
build-server ×1
c++ ×1
classloader ×1
file-io ×1
jar ×1
maven ×1
variables ×1
xcode ×1