有人能告诉我Ant和Maven之间的区别吗?我也没用过.我知道他们习惯于自动构建Java项目,但我不知道从哪里开始.
根据我的少量经验,我只使用Ant作为构建工具.还有其他更好的项目,为什么?
我正在尝试自动化工程组的构建过程.作为自动化的一部分,我试图达到这样的程度,即应用符合模式的特定标记的行为将启动一个自动化过程,该过程将执行以下操作:
我很确定我可以用subversion中的post-hook做到这一点,但是我试图想办法用一个不同于subversion钩子的东西来做这件事.
我的偏好:
来自Java开发,其中构建和项目管理工具比比皆是,我想知道Django可用的内容.我真的很喜欢使用像Maven这样的东西来构建东西,但还有另一种首选方法吗?
我真的在寻找以下内容:
mvn install非常简单和酷.目前Maven或其他工具可以实现吗?我正在这里开展一个非常大的项目,我希望像Maven这样的kick-rad构建/项目管理系统能够帮助项目随着时间的推移而增长.
django continuous-integration project-management build-management maven
在eclipse中的ant编辑器中,撤消对我不起作用.当我按Ctrl-Z时没有任何反应.
是否有可能以某种方式启用撤消或这是一个错误?
我在Windows XP Professional上使用Eclipse 3.4.2(Ganymede).
我正在尝试将两个构建系统粘合在一起.两者都是递归的(makefile中的规则使用make来调用其他makefile来构建项目的组件).
我将它们称为'A'和'B',其中'A'构建应用程序,'B'构建'A'使用的库.
A中的顶级makefile调用'make TARGET = whatever',这意味着构建的所有递归调用的位都将TARGET的值作为只读变量继承,包括来自B的构建系统,它被作为一部分调用递归构建.
我不希望在'B'(来自不同的项目)的构建系统中发生这种情况,因为那里的makefile使用TARGET用于它们自己的目的,并且构建失败,因为TARGET具有错误的值并且是只读的.
我只能看到两个解决方案,这两个解决方案都不是可调整的;
1)将TARGET重命名为A中设置它的makefile中的其他内容以及使用它的A中的makefile,以避免与构建系统的较低级别发生冲突.
2)在设置了TARGET变量的B中的makefile中的任何地方使用'override'指令,以覆盖其只读状态.
谁有更好的想法?- 理想情况下,除了我从A明确传递给B构建系统的那些选项之外,我不希望B的构建系统从A继承任何东西.
顺便说一下,我正在使用GNU Make v3.80.
我们维护一个在vb/c#.net中开发的中型Windows应用程序.现在,这个应用程序的构建和部署过程仍然是手动的.我决心使用MSBuild使这个过程自动化,我现在还不知道.
我们的应用程序有一个简单的构建结构,一组项目已经分为四个解决方案(.sln),只需要按顺序构建四个slns.然后将一个项目(它是最后一个要构建的sln的一部分)发布到一个目录.这就对了.一个简单的过程已经消耗了30分钟的手动构建时间,我很确定这可以在至少1/4的时间内使用msbuild在没有人工干扰的情况下完成.
我的所有目标设定良好,我开始在网上寻找MSBuild资源来完成我的过程,但可能会看到很多困扰我的事情.需要一个指针或一个很好的解释,说明如何从我的简单场景开始和从哪里开始.非常感谢帮助.
我有一个依赖于几个模块的Web应用程序.所以为了构建它,我有一个主pom.xml文件.我想要这个pom文件做的是检查所有模块.下面是我的pom文件.
<executions>
<execution>
<id>check-out-project1</id>
<phase>generate-sources</phase>
<goals>
<goal>checkout</goal>
</goals>
<configuration>
<checkoutDirectory>${project.build.directory}/module1</checkoutDirectory>
<connectionUrl>scm:svn:svn://svnserver/svn/module1/trunk</connectionUrl>
<!--<developerConnection>scm:svn:svn://svnserver/svn/module1/trunk</developerConnection>!-->
<username>username</username>
<password>password</password>
</configuration>
</execution>
<execution>
<id>check-out-project2</id>
<phase>generate-sources</phase>
<goals>
<goal>checkout</goal>
</goals>
<configuration>
<checkoutDirectory>${project.build.directory}/module1</checkoutDirectory>
<connectionUrl>scm:svn:svn://svnserver/svn/module1/trunk</connectionUrl>
<username>username</username>
<password>password</password>
</configuration>
</execution>
</executions>
Run Code Online (Sandbox Code Playgroud)
我试过mvn scm:checkout 和mvn scm:checkout -check-out-project1但是它给我错误: 无法运行checkout命令:无法加载scm提供程序.您需要定义connectionUrl参数.
我不明白为什么会发生这种情况,因为我已经在pom文件中定义了connectionUrl参数,我希望得到的想法是将pom文件配置为能够同时签出多个项目.请让我知道我在这里做错了什么,在此先感谢.
我必须在现有的 .html 文件中集成许多 HTML 文件的生成Makefile。问题是 HTML 文件需要驻留在许多不同的目录中。我的想法是写一个隐式规则,将源文件(*.st)转换成对应的html文件
%.html: %.st
$(HPC) -o $@ $<
Run Code Online (Sandbox Code Playgroud)
以及依赖于所有 html 文件的规则
all: $(html)
Run Code Online (Sandbox Code Playgroud)
如果 HTML 文件不在 builddir 中,则make找不到隐式规则:*** No rule to make target. 如果我像这样更改隐式规则
$(rootdir)/build/doc/2009/06/01/%.html: %.st
$(HPC) -o $@ $<
Run Code Online (Sandbox Code Playgroud)
它找到了,但是我必须对项目中的几乎每个文件都有一个隐式规则。根据GNU手册中的隐式规则搜索算法make,规则搜索的工作方式如下:
- 将整个目标名称t拆分为目录部分,称为d,其余部分称为n。例如,如果t是
src/foo.o,则d是src/,而n是foo.o。- 列出其中一个目标与t或n匹配的所有模式规则。如果目标模式包含斜杠,则与t匹配;否则,针对n。
为什么没有找到隐式规则,假设使用 GNU,最优雅的解决方案make是什么?
这是我的精简版Makefile: …
我在使用 Maven Exec 插件时遇到了一些困难。我想使用该插件执行两个单独的mvn命令,因此我只需要执行mvn exec:exec即可执行所有命令。
以下两个命令单独运行效果良好:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<configuration>
<executable>mvn</executable>
<arguments>
<argument>clean</argument>
</arguments>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<configuration>
<executable>mvn</executable>
<arguments>
<argument>package</argument>
</arguments>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这是我尝试将两者结合起来以便用一个命令执行它们:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<id>id1</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>mvn</executable>
<arguments>
<argument>clean</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>id2</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>mvn</executable>
<arguments>
<argument>package</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我现在执行mvn exec:exec时,我收到以下错误消息:
[INFO] Scanning for projects...
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder …Run Code Online (Sandbox Code Playgroud)