有没有办法可以通过命令切换来改变我的依赖关系?
意思是,我有
<dependency>
<groupId>api</groupId>
<artifactId>api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
以这样的方式设置它,如果我这样做
mvn package -Dprovided
我的有效POM将是
<dependency>
<groupId>nmsc</groupId>
<artifactId>nmsc_api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<scope>provided</scope>
</dependency>
不使用配置文件,因为配置文件要求我将依赖项放入两次。这有可能吗?
答案 0 :(得分:2)
如果将变量与变量配对,使用配置文件不需要多次列出依赖项,但如果您只是为单个属性执行此操作,那么您可能只需直接覆盖属性:
<properties>
<myExeScope>compile<myExeScope>
</properties>
<dependencies>
<dependency>
<groupId>nmsc</groupId>
<artifactId>nmsc_api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<scope>${myExeScope}</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<scope>${myExeScope}</scope>
</dependency>
</dependencies>
然后您应该能够覆盖指定依赖项的范围:
mvn -DmyExeScope=provided
注意,我没有编译这个,所以如果有拼写错误,请更正它们并注意更正。