我有一个使用多个配置文件的项目.每个配置文件使用以下插件:
然而,以粗体标记的那个是唯一的插件,其中配置文件之间存在差异(将使用antrun插件复制不同的配置文件).所有配置文件的其他4个插件配置完全相同.
现在的问题是:是否有一些方法可以将这些常见插件只包含一次,但默认情况下仍然会将它们用于所有配置文件?
就像是:
<shared><plugin1><plugin2>...</shared>
<profile><plugin3></profile>
<profile><plugin3></profile>
...
谢谢,
Stijn
我有我的Wicket 1.4代码,有一个链接下载以编程方式生成的文件:
protected class MyWebResource extends WebResource {
public IResourceStream getResourceStream() {
.....
return new StringResourceStream(myString, "text/plain");
}
}
ResourceLink<?> downloadLink =
new ResourceLink<Object>("downloadLink", new MyWebResource());
Run Code Online (Sandbox Code Playgroud)
一切都很好.现在我升级到Wicket 1.5.现在WebResource不再存在了.
我在网上搜索了很多年,当然这必须是一个简单的问题,有一个简单的解决方案吗?唉,我找不到.
偶尔,在SVN更新后,POM已更改,IntelliJ似乎没有注意到这一点,并且您开始有奇怪的行为(不存在的类,方法......).我现在知道重新导入所有maven项目解决了这个问题,但我不明白为什么这是必要的.
我检查过'自动导入Maven项目'.
我不认为这是一个错误,因为在第12版中已经是这种情况,仍然在13.
有没有办法从liferay服务器A创建/导出LAR并使用脚本甚至maven/hudson插件在liferay服务器B中导入?我正在使用Liferay 6.0.5.
谢谢,Stijn
我有以下实体类用户:
public class User implements Serializable {
@Column(length = 10, name = "user_type")
@Access(AccessType.PROPERTY)
private String userTypeS;
@Transient
private UserType userType;
...
public void setUserType(UserType userType) {
this.userType = userType;
this.userTypeS = this.userType.getType();
}
protected void setUserTypeS(String userTypeS) {
this.userTypeS = userTypeS;
userType = UserType.toUserType(userTypeS);
}
Run Code Online (Sandbox Code Playgroud)
UserType是一个枚举.这个问题是我不能简单地使用@Enumerated注释来映射UserType,因为代码中枚举的表示不同于,例如:
public enum UserType {
CUSTOMER_NON_PRO("custnop") ...
Run Code Online (Sandbox Code Playgroud)
与实体协作时,我希望能够将枚举设置为userType而不是它的String表示.为此我创建了一个公共setter,它设置enum(userType)并将其转换为它的String表示(用hibernate映射).类似地,有一个受保护的setUserTypeS必须由hibernate调用,并将String userType映射到枚举UserType.
当然,hibernate必须使用setter来填充实体.在我们的项目中,最好在getters/setter上设置属性本身的注释.因此,hibernate将使用内省直接设置属性值(从而绕过setter).对于userTypeS,我指出访问类型是PROPERTY(io FIELD),因为hibernate将调用setUSerTypeS.
所有这一切顺利进行."问题"是我们的日志中会看到以下警告:
org.hibernate.cfg.AnnotationBinder - 在字段上放置@Access(AccessType.PROPERTY)没有任何效果.
此警告似乎不正确.如果我将从@Access(AccessType.PROPERTY)字段userTypeS中删除,那么hibernate将不会调用setter,因此不会设置enum userType.因此,放置@Access(AccessType.PROPERTY)确实有影响.
此警告信息是无效还是过时,或者我是否误解了某些内容?
谢谢,
Stijn
我想检查页面是否在完成加载后滚动并且我正在使用此代码:
$(document).ready(function(){
alert($(window).scrollTop());
});
Run Code Online (Sandbox Code Playgroud)
它适用于Firefox,但总是0在Chrome中返回.为什么是这样?
我有以下Maven项目设置:
我一直在考虑如何用maven来支持这个,但我仍在寻找完美的解决方案.
我能想到的最好的解决方案是为每个客户端创建一个单独的maven项目(例如PM-CLIENT1,...),它只包含客户端特定的配置文件和其他java文件或jsp,.... 下一步是将PM-Web项目和客户端项目视为一个Web项目,这意味着:将它们组合(打包)为1个war文件,其中来自客户端项目的文件优先于PM-Web项目中的文件.
更具体:mvn package在PM-Client1上运行将从PM-Web获取所有内容,从PM-Client1添加/替换文件,然后将其打包成单个战争.
所以问题是:如何用maven实现这一目标?
在我的pom中,我添加了exec-maven-plugin来调用一个生成文件的java类.此类需要将一些参数传递给main方法,其中一个是输入文件的位置(在项目外部).到目前为止,我一直在使用相对路径,这工作正常:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.laco.projectmaster.util.LanguageGenerator</mainClass>
<arguments>
<argument>../PM-Config/dev/PMLanguage.xls</argument>
<argument>PM4.0</argument>
<argument>${project.build.outputDirectory}/com/laco/projectmaster/props/resources</argument>
<argument>ProjectMaster</argument>
<argument>Created during maven build (POM Version: ${pom.version})</argument>
</arguments>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
现在我开始使用hudson来安装/打包和部署战争,我不能再使用这个相对路径了.简单我想,我只是在调用maven时传递输入文件的位置:
mvn clean package -Dlangdir = C:/ somedir
然后改变pom像:
<argument>${langdir}/PMLanguage.xls</argument>
Run Code Online (Sandbox Code Playgroud)
但是,此参数在此处仅被忽略.主类作为参数接收的路径变为null/PMLanguage.xls.参数本身在maven中可用,我使用antrun插件中的echo测试成功.正确的道路得到了回应.
你传递给maven的参数是否默认无论你在pom中引用它们在哪里都没有?
感谢任何帮助,
Stijn
我正在使用Wicket 1.5构建Web应用程序.我需要确定当前登录的用户是管理员还是普通用户,并为每个用户显示不同的页面.
我的代码:
public class HomePage extends WebApplication {
private boolean flag = false;
@Override
protected void init(){do things}
@Override
public Session newSession(Request request, Response response) {
... some calculation ...
return new HomePageWebSession(request);
}
@Override
public Class<? extends WebPage> getHomePage(){
if(flag){
return Admin.class
} else return User.class
}
}
Run Code Online (Sandbox Code Playgroud)
问题是getHomepage之前调用的newSession,我使用newSession来确定用户是否是Admin并初始化标志.另外我看到getHomePage之前newSession被调用多次.为什么getHomePage称为倍数,为什么getHomePage之前被称为newSession?
谢谢你的帮助
我们最近已升级到SonarCube 4.3.2。在以前的版本中(不记得它是什么),可以选择Jacoco作为代码覆盖率分析器,并可以将Maven中的排除项定义为简单属性。
例如
<properties>
<sonar.jacoco.excludes>*/cache/*:*/*Application.java</sonar.jacoco.excludes>
</properties>
Run Code Online (Sandbox Code Playgroud)
在此版本的SonarCube中,不再存在选择Jacoco的选项,因此我试图以其他方式使其工作。关于这个主题的很多很多帖子,但是都没有解决我的问题。我设法排除了类,但这些类在SonarCube中显示为0%(并降低了总覆盖率)。通过上述财产排除似乎不再起作用。
在我的pom中,我添加了以下插件:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.6.0.201210061924</version>
<configuration>
<excludes>
<exclude>**/SonarTest*</exclude>
</excludes>
</configuration>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
配置似乎可以,因为在Jacoco报告中完全排除了该类。SonarTest已进行了部分测试,但使用此配置,Sonar在Sonar中显示为0%,因此似乎排除项在某种程度上起作用。我如何通知Sonar这些被排除的类在覆盖范围内应该被完全忽略。