我有一个项目希望提供一个jar文件:
<packaging>jar</packaging>
Run Code Online (Sandbox Code Playgroud)
但jar是以自定义方式构建的,因此使用jar:jar完成的默认包装已被禁用
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<executions>
<execution>
<id>default-jar</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但是当我想要应用阴影时:在现有的罐子上涂上阴影我会收到错误
项目主要工件不存在.
我假设maven不知道我的自定义工具创建的.jar文件.如何让它知道,因为antrun attachArtifact不起作用
<attachartifact file="./bin/classes.jar" classifier="" type="jar"/>
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
发生了Ant BuildException:org.apache.maven.artifact.InvalidArtifactRTException:对于工件{:jar}:附加工件必须具有与其对应的主工件不同的ID.
所以这不是注册主工件的方法......有没有(没有编写自定义java插件)?
谢谢,卢卡斯
我想将Elm与Javascript库集成,以便Elm动态创建"cells"(html div),Javascript将提供其id-s并使用它们来执行自定义操作.我想要的顺序是
这就是我在开始时实现这一点的方法(完整源代码):
port onCellAdded : CellID -> Cmd msg
update : Msg -> Model -> (Model, Cmd Msg)
update message ({cells} as model) =
case message of
Push ->
let
uid = List.length cells
in
({ model
| cells = [uid] ++ cells
}, onCellAdded uid)
Run Code Online (Sandbox Code Playgroud)
问题是Javascript在另一边
var container = document.getElementById('app');
var demoApp = Elm.RenderDemo.embed(container);
demoApp.ports.onCellAdded.subscribe(function(cellID) {
if(document.getElementById('cell:' + cellID) === null) { window.alert("Cannot find cell " + cellID) }
});
Run Code Online (Sandbox Code Playgroud)
抱怨说找不到这样的身份证.显然,该视图尚未呈现.
所以我OnCellAdded …
我需要将一些参数传递给Javascript,但由于一个奇怪的原因它不能编译.我开始时:
port check : String -> Cmd msg
Run Code Online (Sandbox Code Playgroud)
这很好(直接来自JavaScript Interop).但是当我添加另一个参数时
port check : Int -> String -> Cmd msg
Run Code Online (Sandbox Code Playgroud)
我正进入(状态
1 | 端口检查:Int - > String - > Cmd msg
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^你说它应该是:
Run Code Online (Sandbox Code Playgroud)Int -> String -> Platform.Cmd.Cmd msg但您需要使用此处描述的特定格式:http: //guide.elm-lang.org/effect_managers/
我只是通过减少一个参数来解决这个问题
type alias Bundle = (Int, String)
port check : Bundle -> Cmd msg
Run Code Online (Sandbox Code Playgroud)
但如果我能这么做的话会更清洁
app.ports.check.subscribe(function(arg1, arg2) {
});
Run Code Online (Sandbox Code Playgroud)
为什么不编译?
我无法找到一个好的,可扩展的解决方案的问题:
我有一个项目,可以提供给定工件的多种风格.这已被设置为多模块项目,目前有3个模块:
问题是我还有另外50个需要以相同方式设置的项目,即提供3种口味.
解决方案:
任何想法如何做得很好?还有其他选择吗?
谢谢,卢卡斯
编辑:
另一个选择是使用reactor扩展maven-reactor-plugin :inject-modules目标,它将从外部工件下载模块定义,并将其定义附加为普通模块.这将动态创建一个新模块.然后所有50个项目都可以使这个pom.xml成为他们的父项.
配置看起来像这样(草稿):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-reactor-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>inject</id>
<phase>initialize</phase>
<goals>
<goal>inject-modules</goal>
</goals>
<configuration>
<modules>
<module>
<artifactId>flavour1_module</artifactId>
<groupId>[ groupId ]</groupId>
<version>[ version ]</version>
</module>
<module>
<artifactId>flavour2_module</artifactId>
<groupId>[ groupId ]</groupId>
<version>[ version ]</version>
</module>
<module>
<artifactId>flavour3_module</artifactId>
<groupId>[ groupId ]</groupId>
<version>[ version ]</version>
</module>
</modules>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这样做会有意义吗?
更新: …
我有一个应该为几个目标平台构建的工件:
不幸的是,由于缺少交叉编译器,不可能一次创建所有版本的工件.
换句话说,目标是在存储库中有这样的东西
请注意,版本是同步的.怎么做到这一点?
问题是发布过程会在每次构建后升级pom.xml的版本.因此,通过在各种平台上连续构建,我可以实现
但这不是我要找的.
我可以
在Linux上运行
mvn release:prepare release:perform -DpushChanges = false
(将pushChanges设置为false发布不会增加SCM中的版本号)
然后在Windows上运行
mvn release:准备发布:执行
(这会增加版本号)
但是,我有责任以适当的顺序在各种平台上触发发布流程.有没有办法maven可以帮助我这个?
你有什么建议吗?
谢谢
PS.请注意,这不是关于如何组织模块的问题.它是关于如何在多个平台上同步单个工件的发布过程.
与基本maven概念相关的问题:
一旦发布,我希望保证项目构建完全可重现.因此,所有项目和插件依赖项(包括可传递的依赖项)应始终以相同的方式解析.
不幸的是,如果依赖关系以版本范围表示,则情况并非如此.即使设置了项目的直接依赖关系(使用版本:use-releases),也可能发生传递依赖关系仍然可以在将来以其他方式解决.
如何解决这个问题?有没有已知的解决方案?
我在思考(只是一个想法),关于创建一个插件,在发布时将把项目的所有依赖项转储到一个单独的文件,然后在将来构建之后,从文件读取的依赖项将优先于标准maven用来解决依赖关系的方式.但我担心没有插件api.所以它需要一些黑客攻击,我想避免.还有另外一种方法吗?
谢谢,卢卡斯
dependencies release maven maven-release-plugin transitive-dependency
我正在学习 Three.js 并且我正在玩太阳系模型以了解它是如何工作的。所以我有一个场景,其中地球围绕太阳旋转,月球围绕地球旋转。
现在我想专注于月球并使用控件围绕它旋转(同时让它始终位于屏幕中央)。OrbitControls 似乎是理想的选择,但我无法让它们与移动的月亮一起工作。
这是我的 3 次尝试(请忽略地球和月球是立方体)。
首先,我创建了一个场景,其中camera是月球的孩子(没有 OrbitControls)。
moon.add(camera);
camera.lookAt(0, 0, 0);
Run Code Online (Sandbox Code Playgroud)
moon.add(camera);
camera.lookAt(0, 0, 0);
Run Code Online (Sandbox Code Playgroud)
var camera, controls, scene, renderer, labelRenderer;
var solarPlane, earth, moon;
var angle = 0;
function buildScene() {
scene = new THREE.Scene();
solarPlane = createSolarPlane();
earth = createBody("Earth");
moon = createBody("Moon");
scene.add(solarPlane);
solarPlane.add(earth);
earth.add(moon);
moon.add(camera);
}
init();
animate();
function init() {
renderer = new THREE.WebGLRenderer({
antialias: false
});
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
labelRenderer = new …Run Code Online (Sandbox Code Playgroud)