关于Maven两个问题,Ant可以解决,但manven不知道如何处理

lzzgym 2014-03-31 06:11:17
1、Maven如何解决选择性拷贝的问题,比如我有两个目录: properties ,propertis_online,分别对应于我开发和上线的属性配置,当我要上线打包时,我会用ant指定拷贝 online这个目录里的甩有文件到conf目录下,类似如下:
<copy todir="${build.classes.dir}/properties">
<fileset dir="${src.dir}/main/properties_online" />
</copy> ,但是我用Maven如何解决??

2、同样的情况,因为我上线时,会有一些jar文件放在tomcat的lib目录下,这样的话,我war打包时,需要去掉一些jar文件,这个我用ant也不难解决,如果用Maven,如何写??

最好的方法是不是:用Maven来管理依赖,然后其余的还是让ant来处理??
...全文
2143 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzzgym 2014-06-18
  • 打赏
  • 举报
回复
经验证是可行的。。。通过profile,在mvn package 时指定这个profile就可以了。。。
linapex888 2014-05-17
  • 打赏
  • 举报
回复
为什么我感觉我的方法比你们都要好呢。。。
Silence-轩辕-寂 2014-05-02
  • 打赏
  • 举报
回复
谢谢各位,看各位的讨论我自己也很激动!
Defonds 2014-05-01
  • 打赏
  • 举报
回复
引用 13 楼 aren1984 的回复:
这个可以通过warSourceExcludes属性设置吧? <build> <defaultGoal>install</defaultGoal> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.5</source> <target>1.5</target> <encoding>utf-8</encoding> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.0.2</version> <configuration> <warSourceExcludes> WEB-INF/lib/servlet-api-2.4.jar,WEB-INF/lib/jsp-api-2.0.jar,WEB-INF/lib/junit-3.8.1.jar </warSourceExcludes> </configuration> </plugin> </plugins> </build> jar包排除是生效的,perproties文件没测试过。 以上,提供一个思路以供探讨
先感谢同学参与讨论,提供思路。 有空再细看
aren1984 2014-04-30
  • 打赏
  • 举报
回复
这个可以通过warSourceExcludes属性设置吧? <build> <defaultGoal>install</defaultGoal> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.5</source> <target>1.5</target> <encoding>utf-8</encoding> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.0.2</version> <configuration> <warSourceExcludes> WEB-INF/lib/servlet-api-2.4.jar,WEB-INF/lib/jsp-api-2.0.jar,WEB-INF/lib/junit-3.8.1.jar </warSourceExcludes> </configuration> </plugin> </plugins> </build> jar包排除是生效的,perproties文件没测试过。 以上,提供一个思路以供探讨
Defonds 2014-04-28
  • 打赏
  • 举报
回复
引用 11 楼 fanslate 的回复:
引用 2 楼 defonds 的回复:
上面是你第一个问题的回答。至于第二个,dependency 标签下有个 scope,你把要去掉的 jar 的 scope 设置成 test,这样这些 jar 只会在编译、测试时对你项目有所影响,而不会被打进 war 包。
刚发现你这说的不太对,test的话只在测试类的classpath中,源代码没法编译的。这里应该指定为provided
嗯嗯。谢谢同学指正。
byourfan 2014-04-28
  • 打赏
  • 举报
回复
引用 2 楼 defonds 的回复:
上面是你第一个问题的回答。至于第二个,dependency 标签下有个 scope,你把要去掉的 jar 的 scope 设置成 test,这样这些 jar 只会在编译、测试时对你项目有所影响,而不会被打进 war 包。
刚发现你这说的不太对,test的话只在测试类的classpath中,源代码没法编译的。这里应该指定为provided
  • 打赏
  • 举报
回复
支持下!!!
Defonds 2014-04-02
  • 打赏
  • 举报
回复
引用 7 楼 fanslate 的回复:
引用 5 楼 defonds 的回复:
这个没办法,maven 可不知道你打包是用于测试还是生产的。目前我们是手工去调整的。如果你有更好的办法,可以通知我们
http://maven.apache.org/guides/introduction/introduction-to-profiles.html 这个?
不错啊,感谢同学分享。 收藏了,等有空了具体去试试
Defonds 2014-04-01
  • 打赏
  • 举报
回复
对于一般的 web 项目,开发的话,不建议打 war 包进行 debug。 我们使用的是 tomcat 插件,可以免部署进行开发测试,tomcat 直接指向你编译好的 class 等资源文件。开发测试起来很高效。 现在把我们的做法分享一下,希望能帮到有需要的朋友: http://blog.csdn.net/defonds/article/details/7845961
Defonds 2014-04-01
  • 打赏
  • 举报
回复
这个没办法,maven 可不知道你打包是用于测试还是生产的。目前我们是手工去调整的。如果你有更好的办法,可以通知我们
lzzgym 2014-04-01
  • 打赏
  • 举报
回复
引用 1 楼 defonds 的回复:
用 maven-antrun-plugin 插件。你可以把 ant 放弃掉了。 maven-antrun-plugin 能让用户在 Maven 项目中运行 Ant 任务。用户可以直接在该插件的配置以 Ant 的方式编写 Target,然后交给该插件的 run 目标去执行。 这里有个指定拷贝 online 这个目录里的甩有文件到 conf 目录,供参考:
			<plugin>
				<artifactId>maven-antrun-plugin</artifactId>
				<executions>
					<execution>
						<phase>package</phase>
						<configuration>
							<tasks>
								<copy file="${project.build.directory}/${project.artifactId}.jar"
									tofile="${env.WMSINSTALL_HOME}/lib/${project.artifactId}.jar"
									overwrite="true" />

								<copy todir="${env.WMSINSTALL_HOME}/lib/${libFolderName}"
									overwrite="true">
									<fileset dir="${project.build.directory}/${libFolderName}"
										includes="**" />
								</copy>

							</tasks>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
谢! 有个问题,按你的方法是可以拷贝文档,但是因为我是分开发和生产的,我如何实现开发时,打包开发所Properties,而生产时我打包生产的properties? 用ant我现在的做法是写了两个ant文件,针对开发和生产分开打包,而如果用maven,如何做?是不是写几个ant任务,然后用maven build时 选择一个 ?
lzzgym 2014-04-01
  • 打赏
  • 举报
回复
引用 7 楼 fanslate 的回复:
引用 5 楼 defonds 的回复:
这个没办法,maven 可不知道你打包是用于测试还是生产的。目前我们是手工去调整的。如果你有更好的办法,可以通知我们
http://maven.apache.org/guides/introduction/introduction-to-profiles.html 这个?
貌似是这个,我研究测试一下先。
byourfan 2014-04-01
  • 打赏
  • 举报
回复
引用 5 楼 defonds 的回复:
这个没办法,maven 可不知道你打包是用于测试还是生产的。目前我们是手工去调整的。如果你有更好的办法,可以通知我们
http://maven.apache.org/guides/introduction/introduction-to-profiles.html 这个?
tony4geek 2014-03-31
  • 打赏
  • 举报
回复
有配置的你可以配置上需要 依赖的,不要的 也可以排除掉。
Defonds 2014-03-31
  • 打赏
  • 举报
回复
上面是你第一个问题的回答。至于第二个,dependency 标签下有个 scope,你把要去掉的 jar 的 scope 设置成 test,这样这些 jar 只会在编译、测试时对你项目有所影响,而不会被打进 war 包。
Defonds 2014-03-31
  • 打赏
  • 举报
回复
用 maven-antrun-plugin 插件。你可以把 ant 放弃掉了。 maven-antrun-plugin 能让用户在 Maven 项目中运行 Ant 任务。用户可以直接在该插件的配置以 Ant 的方式编写 Target,然后交给该插件的 run 目标去执行。 这里有个指定拷贝 online 这个目录里的甩有文件到 conf 目录,供参考:
			<plugin>
				<artifactId>maven-antrun-plugin</artifactId>
				<executions>
					<execution>
						<phase>package</phase>
						<configuration>
							<tasks>
								<copy file="${project.build.directory}/${project.artifactId}.jar"
									tofile="${env.WMSINSTALL_HOME}/lib/${project.artifactId}.jar"
									overwrite="true" />

								<copy todir="${env.WMSINSTALL_HOME}/lib/${libFolderName}"
									overwrite="true">
									<fileset dir="${project.build.directory}/${libFolderName}"
										includes="**" />
								</copy>

							</tasks>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
				</executions>
			</plugin>

81,119

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧